Logs on 2023-11-17 (liberachat/#haskell)
| 00:01:47 | × | exarkun quits (~exarkun@user/exarkun) (Server closed connection) |
| 00:03:38 | → | exarkun joins (~exarkun@user/exarkun) |
| 00:14:45 | → | maturana joins (~maturana@37.218.244.249) |
| 00:14:47 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 00:14:58 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 00:16:07 | × | maturana quits (~maturana@37.218.244.249) (Client Quit) |
| 00:17:16 | → | cheater_ joins (~Username@user/cheater) |
| 00:17:20 | × | Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.) |
| 00:20:40 | <hammond> | is the closure in scheme the same as the closure in haskell? |
| 00:21:06 | × | cheater quits (~Username@user/cheater) (Ping timeout: 260 seconds) |
| 00:21:13 | cheater_ | is now known as cheater |
| 00:23:45 | → | cheater_ joins (~Username@user/cheater) |
| 00:24:05 | <monochrom> | I'll go on a limb and say yes. :) |
| 00:25:08 | → | notzmv joins (~zmv@user/notzmv) |
| 00:28:12 | <EvanR> | jackdk, extremely <missing word?> core abstraction? |
| 00:28:25 | × | cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds) |
| 00:28:38 | cheater_ | is now known as cheater |
| 00:29:18 | → | cheater_ joins (~Username@user/cheater) |
| 00:29:19 | <EvanR> | closure: pass by reference without the passing xD |
| 00:29:41 | <jackdk> | EvanR: sorry, I accidentally a word. I think I wanted "elegant" there; it's not the simplest thing (parameterising the stream by a functor) but adds a lot of power that feels worth the complexity (this gets you proper chunked streaming and streams of individual elements with the same abstraction). |
| 00:30:17 | <EvanR> | nice |
| 00:32:29 | <hammond> | monochrom in scheme you can make a counter function that whenever called increments returns a increased value. because the inner value is encapsulated in the function and stored in heap somewhere. |
| 00:32:59 | <hammond> | and if you have difference instances of the func you can have different incrementers. |
| 00:33:21 | × | cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds) |
| 00:33:26 | cheater_ | is now known as cheater |
| 00:36:53 | <hammond> | this example in js https://www.w3schools.com/js/tryit.asp?filename=tryjs_function_closures5 |
| 00:37:45 | <hammond> | since data in haskell is immutable, how is closure... a closure in the sense the js is one. ikd. |
| 00:37:46 | → | cheater_ joins (~Username@user/cheater) |
| 00:37:48 | <monochrom> | I don't know why you are telling me that. But in Haskell the only change is you use an IORef. |
| 00:37:48 | <hammond> | idk* |
| 00:38:28 | <hammond> | hmm |
| 00:38:40 | <monochrom> | Plus, even in the pure fragment, lazy evaluation is a mutation from unevaluated expression to value. |
| 00:40:06 | × | cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds) |
| 00:40:12 | cheater_ | is now known as cheater |
| 00:40:18 | <monochrom> | Although, people will debate whether the standard absolutely requires that or is also OK with potentially exp-time call-by-name. (Answer: the latter.) |
| 00:40:32 | × | dumptruckman quits (~dumptruck@23-239-13-136.ip.linodeusercontent.com) (Server closed connection) |
| 00:40:42 | → | dumptruckman joins (~dumptruck@23-239-13-136.ip.linodeusercontent.com) |
| 00:40:58 | × | Pozyomka quits (~pyon@user/pyon) (Quit: brb) |
| 00:41:13 | → | Pozyomka joins (~pyon@user/pyon) |
| 00:57:08 | → | cheater_ joins (~Username@user/cheater) |
| 00:58:32 | × | robertm quits (robertm@lattice.rojoma.com) (Quit: WeeChat 3.8) |
| 01:00:24 | → | robertm joins (robertm@lattice.rojoma.com) |
| 01:01:01 | × | cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds) |
| 01:01:05 | cheater_ | is now known as cheater |
| 01:04:30 | × | tomith quits (tomith@85-156-187-17.elisa-laajakaista.fi) (Ping timeout: 268 seconds) |
| 01:11:33 | → | [_] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 01:12:04 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
| 01:14:38 | × | p3n quits (~p3n@217.198.124.246) (Server closed connection) |
| 01:14:55 | → | p3n joins (~p3n@217.198.124.246) |
| 01:14:58 | → | haskellbridge joins (~haskellbr@069-135-003-034.biz.spectrum.com) |
| 01:14:58 | ChanServ | sets mode +v haskellbridge |
| 01:15:45 | → | tomith joins (tomith@user/tomith) |
| 01:16:44 | × | hammond quits (proscan@gateway02.insomnia247.nl) (Changing host) |
| 01:16:44 | → | hammond joins (proscan@user/hammond2) |
| 01:18:49 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 01:29:41 | × | Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 240 seconds) |
| 01:30:37 | → | Maxdamantus joins (~Maxdamant@user/maxdamantus) |
| 01:34:24 | <ski> | hammond : in a Scheme with boxen (mutable reference cells) (e.g. Racket) : |
| 01:34:37 | <ski> | (define (make-counter) |
| 01:34:54 | <ski> | (let ((count (box 0))) |
| 01:35:01 | <ski> | (lambda () |
| 01:35:17 | <ski> | (let ((val (unbox count))) |
| 01:35:42 | <ski> | (set-box! count (+ val 1)) |
| 01:35:52 | <ski> | val)))) |
| 01:36:19 | <ski> | in Haskell : |
| 01:36:46 | <ski> | makeCounter :: IO (IO Integer) |
| 01:37:01 | <ski> | makeCounter = do |
| 01:37:12 | <ski> | count <- newIORef 0 |
| 01:37:23 | <ski> | return $ do |
| 01:37:40 | <ski> | val <- readIORef count |
| 01:37:56 | <ski> | writeIORef count (val + 1) |
| 01:38:01 | <ski> | return val |
| 01:40:38 | <hammond> | I see. |
| 01:40:41 | <hammond> | thx ski |
| 01:41:35 | <ski> | it would probably be more common to use mutation of variables in Scheme (no such in Haskell), with `set!', rather than create explicit boxen |
| 01:43:21 | × | earthy quits (~arthurvl@2a02-a469-f5e2-1-83d2-ca43-57a2-dc81.fixed6.kpn.net) (Ping timeout: 268 seconds) |
| 01:43:58 | <hammond> | ski but the box and unbox are the haskell equivalents right. |
| 01:45:11 | <ski> | of `newIORef' and `readIORef', yes |
| 01:46:00 | <hammond> | cool. thx. |
| 01:46:27 | <hammond> | I think learning scheme is helping me understand haskell better. |
| 01:47:11 | × | cptaffe quits (~cptaffe@user/cptaffe) (Server closed connection) |
| 01:47:19 | <hammond> | like when i was looking at this https://chrisdone.com/posts/haskell-doesnt-have-macros/ |
| 01:47:30 | → | cptaffe joins (~cptaffe@user/cptaffe) |
| 01:54:51 | × | Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 256 seconds) |
| 01:54:54 | → | cheater_ joins (~Username@user/cheater) |
| 01:55:31 | × | vglfr quits (~vglfr@78.26.242.160) (Read error: Connection reset by peer) |
| 01:55:44 | → | vglfr joins (~vglfr@88.155.21.216) |
| 01:56:15 | × | vglfr quits (~vglfr@88.155.21.216) (Read error: Connection reset by peer) |
| 01:56:22 | × | koz quits (~koz@121.99.240.58) (Ping timeout: 246 seconds) |
| 01:57:51 | → | vglfr joins (~vglfr@78.26.242.160) |
| 01:59:06 | × | cheater quits (~Username@user/cheater) (Ping timeout: 260 seconds) |
| 01:59:11 | cheater_ | is now known as cheater |
| 02:00:42 | × | sa1 quits (sid7690@id-7690.ilkley.irccloud.com) (Server closed connection) |
| 02:00:52 | → | sa1 joins (sid7690@id-7690.ilkley.irccloud.com) |
| 02:01:11 | → | koz joins (~koz@121.99.240.58) |
| 02:01:32 | → | bilegeek joins (~bilegeek@2600:1008:b041:46b6:dc69:f6ef:64a9:b47f) |
| 02:01:40 | → | Maxdamantus joins (~Maxdamant@user/maxdamantus) |
| 02:04:24 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 02:06:17 | → | earthy joins (~arthurvl@2a02-a469-f5e2-1-83d2-ca43-57a2-dc81.fixed6.kpn.net) |
| 02:09:51 | × | otto_s quits (~user@p4ff275a7.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
| 02:11:55 | → | otto_s joins (~user@p4ff27677.dip0.t-ipconnect.de) |
| 02:21:30 | × | dove quits (~irc@2600:3c00:e000:287::1) (Server closed connection) |
| 02:21:48 | → | dove joins (~irc@2600:3c00:e000:287::1) |
| 02:23:11 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 02:26:31 | → | arkfuture joins (~Thunderbi@user/arkfuture) |
| 02:30:33 | × | xff0x quits (~xff0x@2405:6580:b080:900:389:c68e:2e26:10bf) (Ping timeout: 256 seconds) |
| 02:33:23 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
| 02:36:34 | → | cheater_ joins (~Username@user/cheater) |
| 02:37:55 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 02:38:56 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 02:41:00 | × | cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds) |
| 02:41:02 | cheater_ | is now known as cheater |
| 02:44:03 | → | cheater_ joins (~Username@user/cheater) |
| 02:48:07 | × | cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds) |
| 02:48:10 | cheater_ | is now known as cheater |
| 02:50:41 | × | arkfuture quits (~Thunderbi@user/arkfuture) (Quit: arkfuture) |
| 02:50:46 | × | koz quits (~koz@121.99.240.58) (Ping timeout: 245 seconds) |
| 02:51:48 | × | emmanuelux quits (~emmanuelu@user/emmanuelux) (Quit: au revoir) |
| 02:53:03 | → | koz joins (~koz@121.99.240.58) |
| 02:54:21 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 02:54:21 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 256 seconds) |
| 02:58:53 | × | Square2 quits (~Square4@user/square) (Ping timeout: 256 seconds) |
| 03:01:43 | × | Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 256 seconds) |
| 03:02:17 | → | Maxdamantus joins (~Maxdamant@user/maxdamantus) |
| 03:03:24 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 246 seconds) |
| 03:06:34 | × | qqq quits (~qqq@92.43.167.61) (Remote host closed the connection) |
| 03:13:33 | × | andjjj23 quits (~irc@107.170.228.47) (Server closed connection) |
| 03:13:51 | → | andjjj23 joins (~irc@107.170.228.47) |
| 03:14:11 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer) |
| 03:14:11 | × | vglfr quits (~vglfr@78.26.242.160) (Read error: Connection reset by peer) |
| 03:14:24 | → | vglfr joins (~vglfr@88.155.21.216) |
| 03:16:46 | × | vilya quits (~vilya@user/vilya) (Ping timeout: 268 seconds) |
| 03:17:16 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 03:17:55 | → | vilya joins (~vilya@user/vilya) |
| 03:18:14 | → | xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 03:19:20 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:2945:3959:f06e:7711) (Remote host closed the connection) |
| 03:19:34 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:2945:3959:f06e:7711) |
| 03:20:28 | × | td_ quits (~td@i53870904.versanet.de) (Ping timeout: 268 seconds) |
| 03:21:10 | × | vglfr quits (~vglfr@88.155.21.216) (Read error: Connection reset by peer) |
| 03:22:03 | → | td_ joins (~td@i5387092c.versanet.de) |
| 03:22:56 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 268 seconds) |
| 03:23:06 | → | vglfr joins (~vglfr@78.26.242.160) |
| 03:24:10 | × | conjunctive quits (sid433686@id-433686.helmsley.irccloud.com) (Server closed connection) |
| 03:24:16 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 03:24:16 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 03:24:16 | finn_elija | is now known as FinnElija |
| 03:24:20 | → | conjunctive joins (sid433686@id-433686.helmsley.irccloud.com) |
| 03:27:47 | × | erty quits (~user@user/aeroplane) (Ping timeout: 256 seconds) |
| 03:28:36 | × | noctux quits (~noctux@user/noctux) (Ping timeout: 246 seconds) |
| 03:29:29 | × | Benzi-Junior quits (~BenziJuni@88-149-64-112.du.xdsl.is) (Server closed connection) |
| 03:29:50 | → | Benzi-Junior joins (~BenziJuni@88-149-64-112.du.xdsl.is) |
| 03:30:59 | → | noctux joins (~noctux@user/noctux) |
| 03:31:29 | × | hippoid quits (~hippoid@c-98-213-162-40.hsd1.il.comcast.net) (Changing host) |
| 03:31:29 | → | hippoid joins (~hippoid@user/hippoid) |
| 03:38:15 | → | rosco joins (~rosco@175.136.157.149) |
| 03:41:33 | × | terrorjack quits (~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat) |
| 03:42:30 | → | terrorjack joins (~terrorjac@2a01:4f8:c17:87f8::) |
| 03:45:26 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 03:53:37 | × | Vq quits (~vq@90-225-115-195-no122.tbcn.telia.com) (Server closed connection) |
| 03:53:47 | → | Vq joins (~vq@90-225-115-195-no122.tbcn.telia.com) |
| 03:54:47 | × | T_S____ quits (sid501726@id-501726.uxbridge.irccloud.com) (Server closed connection) |
| 03:55:04 | → | T_S____ joins (sid501726@id-501726.uxbridge.irccloud.com) |
| 03:56:51 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 03:57:46 | → | img joins (~img@user/img) |
| 04:00:58 | × | vilya quits (~vilya@user/vilya) (Read error: Connection reset by peer) |
| 04:06:15 | → | vilya joins (~vilya@user/vilya) |
| 04:09:33 | → | aforemny_ joins (~aforemny@2001:9e8:6cfd:dc00:140c:ed35:bfe1:eaed) |
| 04:10:45 | × | aforemny quits (~aforemny@2001:9e8:6cd7:8c00:47af:9d09:fce9:5fc4) (Ping timeout: 245 seconds) |
| 04:10:51 | × | hugo quits (znc@quicksilver.lysator.liu.se) (Server closed connection) |
| 04:11:10 | → | hugo joins (znc@quicksilver.lysator.liu.se) |
| 04:11:58 | → | billchenchina joins (~billchenc@103.152.35.21) |
| 04:12:24 | <lockywolf> | Scheme now has boxes |
| 04:17:42 | → | dsrt^ joins (~cd@c-98-242-74-66.hsd1.ga.comcast.net) |
| 04:19:13 | × | ivelten quits (~ivelten@38.252.84.3) (Quit: Textual IRC Client: www.textualapp.com) |
| 04:23:59 | × | euleritian quits (~euleritia@dynamic-002-247-251-218.2.247.pool.telefonica.de) (Read error: Connection reset by peer) |
| 04:24:17 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 04:25:10 | × | buhman quits (sid411355@user/buhman) (Server closed connection) |
| 04:25:25 | → | buhman joins (sid411355@user/buhman) |
| 04:26:39 | → | bilegeek_ joins (~bilegeek@2600:1008:b01b:b030:16e8:c80e:af15:b9f5) |
| 04:28:26 | → | cheater_ joins (~Username@user/cheater) |
| 04:29:32 | × | bilegeek quits (~bilegeek@2600:1008:b041:46b6:dc69:f6ef:64a9:b47f) (Ping timeout: 268 seconds) |
| 04:29:34 | <EvanR> | haskell doesn't have macros, but it has template haskell |
| 04:30:41 | × | cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds) |
| 04:30:51 | cheater_ | is now known as cheater |
| 04:32:51 | × | robobub quits (uid248673@id-248673.uxbridge.irccloud.com) (Server closed connection) |
| 04:34:25 | → | robobub joins (uid248673@id-248673.uxbridge.irccloud.com) |
| 04:34:30 | × | glowcoil quits (sid3405@id-3405.tinside.irccloud.com) (Server closed connection) |
| 04:34:43 | → | glowcoil joins (sid3405@id-3405.tinside.irccloud.com) |
| 04:37:34 | × | Adeon quits (sid418992@id-418992.lymington.irccloud.com) (Server closed connection) |
| 04:37:43 | → | Adeon joins (sid418992@id-418992.lymington.irccloud.com) |
| 04:45:40 | <c_wraith> | also... GHC does have macros. That work sort of badly because the C pre-processor makes assumptions about tokens in the source that haskell can violate |
| 04:45:59 | → | erty joins (~user@user/aeroplane) |
| 04:46:24 | <c_wraith> | But if you want to control things Template Haskell doesn't give you access to, they're an option |
| 04:48:32 | <EvanR> | level 1: haskell, level 2: template haskell, level 3: C pre-processor, level 4: bonkers turing complete C pre-processor metaprogramming |
| 04:48:47 | <monochrom> | Wait, we are now chorussing about Scheme adding everything Haskell has, and Haskell is lacking everything that Scheme has. >:) |
| 04:48:48 | <EvanR> | level 5: scheme generating the above |
| 04:49:16 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 268 seconds) |
| 04:49:27 | <monochrom> | That is a very meta level. >:) |
| 04:49:44 | <c_wraith> | You missed the part where ghc can run arbitrary programs as pre-processors |
| 04:49:55 | <EvanR> | I did not even know that |
| 04:50:20 | <monochrom> | You can reply with "Scheme can run arbitrary language interpreters" >:) |
| 04:51:46 | <c_wraith> | it's -pgfmF to specify an arbitrary pre-processor |
| 04:51:57 | <c_wraith> | err. -pgmF |
| 04:52:04 | <c_wraith> | got excited hitting buttons |
| 04:52:59 | <c_wraith> | https://ghc.gitlab.haskell.org/ghc/doc/users_guide/phases.html#pre-processor |
| 04:54:05 | <EvanR> | the worst explanation of how macros differ from normal functions: macros generate source code |
| 04:54:42 | <EvanR> | because... then it's not *source* code |
| 04:56:08 | <EvanR> | the true source being some kolmogorov minimal thing |
| 04:56:43 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 04:57:24 | × | bilegeek_ quits (~bilegeek@2600:1008:b01b:b030:16e8:c80e:af15:b9f5) (Quit: Leaving) |
| 04:59:29 | <monochrom> | I don't think it's worst. |
| 04:59:40 | <monochrom> | But how would you explain it? |
| 05:01:10 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 246 seconds) |
| 05:01:21 | × | waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 246 seconds) |
| 05:04:00 | × | rosco quits (~rosco@175.136.157.149) (Quit: Lost terminal) |
| 05:04:39 | <erty> | I've tried to compare haskell and javascript side-by-side by running same algo. Algo sums integers in a list. Haskell took 0.2s and js took 0.6s. |
| 05:04:45 | <erty> | Haskell [http://ix.io/4LIN] Js [http://ix.io/4LIO] |
| 05:08:04 | <erty> | the algo is the one that ski mentioned yesterday |
| 05:08:17 | <EvanR> | I could probably compile the relevant haskell and relevant javascript by hand to something which is much faster, and also (un)coincidentally equal |
| 05:08:51 | → | trev joins (~trev@user/trev) |
| 05:09:02 | <EvanR> | implementing the sufficiently smart compiler |
| 05:10:09 | <c_wraith> | erty: Is it intentional that you're depending on the compiler to notice and fix the performance problems in the Haskell code? (It probably will, but it's just generally better to write fast code than hope the compiler fixes slow code) |
| 05:12:05 | <erty> | c_wraith: I would love to know about how can I write something faster than that code |
| 05:12:11 | × | drdo quits (~drdo@bl14-14-49.dsl.telepac.pt) (Server closed connection) |
| 05:12:35 | → | drdo joins (~drdo@bl14-14-49.dsl.telepac.pt) |
| 05:12:58 | <c_wraith> | erty: well, the compiler is probably fixing the issue such that it won't matter if you change to something faster. The question is if you want to write code the compiler doesn't have to fix |
| 05:15:24 | → | lisbeths joins (uid135845@id-135845.lymington.irccloud.com) |
| 05:16:03 | × | billchenchina quits (~billchenc@103.152.35.21) (Ping timeout: 246 seconds) |
| 05:16:40 | <c_wraith> | erty: fascinatingly... It doesn't give me the same output you see. Are you running on a 32-bit machine and overflowing Int? |
| 05:16:40 | → | rosco joins (~rosco@175.136.157.149) |
| 05:17:39 | → | cheater_ joins (~Username@user/cheater) |
| 05:18:01 | <c_wraith> | erty: interestingly, I actually do see about a 90% reduction in runtime if I change the implementation of sumIt to (foldl' (+) 0) |
| 05:21:15 | × | tomku quits (~tomku@user/tomku) (Server closed connection) |
| 05:21:23 | <c_wraith> | Hmm. foldl' might be cheating... It's fusing, when none of the other implementations I've tested get to. |
| 05:21:29 | → | tomku joins (~tomku@user/tomku) |
| 05:21:39 | × | cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds) |
| 05:21:45 | cheater_ | is now known as cheater |
| 05:22:25 | <erty> | c_wraith: Sorry for late reply. Yeah my M/C is a bit old. But while writing code, do we have to writing something that compiler won't have to fix |
| 05:23:36 | → | billchenchina joins (~billchenc@103.152.35.21) |
| 05:24:02 | <erty> | When you say "you want to write code the compiler doesn't have to fix", are you talking interms of haskell or javascript |
| 05:24:10 | <c_wraith> | Haskell |
| 05:24:27 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 05:24:55 | <c_wraith> | erty: import Data.List and then try sumIt = foldl' (+) 0 |
| 05:25:40 | <c_wraith> | erty: though now I'm curious what compiler (and version) you're using for Haskell |
| 05:26:00 | <erty> | ok, I remember yesterday mauke introduced me to `!` operator that I can use to avoid unbounded space problem (sumPlus !acc (x:xs) = sumPlus (acc+x) xs). |
| 05:26:15 | <erty> | Is that how your write code that compiler wont fix |
| 05:26:27 | <c_wraith> | yes, that's what I was referring to |
| 05:27:06 | <c_wraith> | But it turns out on more recent version of GHC, the fact that foldl' can fuse means it can run in about 90% less time |
| 05:27:07 | <erty> | yeah, I ran the code with and without `!` for input [1..10089850] and |
| 05:27:46 | <erty> | there was a difference of whopping 15 seconds when I executed |
| 05:28:02 | <c_wraith> | ok, now I'm *super* curious what compiler you're on |
| 05:28:08 | <c_wraith> | Are you using hugs or something? |
| 05:28:15 | → | michalz joins (~michalz@185.246.207.221) |
| 05:28:38 | <c_wraith> | (ok, I think hugs is only an interpreter, but whatever) |
| 05:29:14 | <erty> | c_wraith: How can I check that. I use runghc to execute code |
| 05:29:21 | × | billchenchina quits (~billchenc@103.152.35.21) (Ping timeout: 246 seconds) |
| 05:29:29 | <c_wraith> | oh. you're using GHC as an interpreter. Ok, that explains the performance |
| 05:29:32 | <erty> | time runghc tobe exact |
| 05:29:51 | <c_wraith> | what does ghc --version report? |
| 05:30:02 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
| 05:30:10 | <erty> | this->`The Glorious Glasgow Haskell Compilation System, version 9.2.4` |
| 05:30:19 | <c_wraith> | Relatively recent, then. |
| 05:30:30 | <monochrom> | Well, runghc is a fair comparison with a js interpreter >:) |
| 05:30:34 | <c_wraith> | Ok. To do any serious performance testing, you should be compiling your code |
| 05:31:20 | <erty> | with stack build? |
| 05:31:29 | <c_wraith> | you can just use ghc directly |
| 05:31:42 | <c_wraith> | that's what I've been doing. ghc -O2 filename.hs |
| 05:31:56 | <c_wraith> | and then time ./filename |
| 05:32:44 | <erty> | ok now it shows 0.014s |
| 05:33:13 | <c_wraith> | that's much more in line with what I'd expect |
| 05:33:24 | <c_wraith> | But now try an implementation that uses foldl' (+) 0 |
| 05:34:55 | <monochrom> | OK, here is what I have found testing on 9.2 and 9.4, with -O and looking at core. |
| 05:35:35 | <monochrom> | 1. with "sumPlus acc (x:xs) = sumPlus (acc+x) xs", even though without seq or !, the compiler acts as though it adds seq for me. |
| 05:35:49 | <monochrom> | 2. There is no difference between foldl and foldl' |
| 05:36:39 | <c_wraith> | demand analysis figures those out. I don't like to depend on compiler magic to get it right |
| 05:36:46 | <monochrom> | I am actually pretty surprised. This is new behaviour. Now everything I teach (read: scaremonger) my students is false. :( :) |
| 05:37:19 | <erty> | c_wraith: results are approximately same for me: 0.016s with foldl |
| 05:37:19 | <monochrom> | I am sitting on a fencing for that. |
| 05:37:51 | <monochrom> | Just 20 years ago, C people were like "write 'register int x;' yourself, don't rely on compiler magic" too. |
| 05:38:19 | <monochrom> | (Today, don't write it yourself, you will almost always make the dumbest decision.) |
| 05:38:40 | <c_wraith> | Turns out strictness is a lot bigger-picture than register allocation |
| 05:39:26 | <c_wraith> | erty: I'm surprised the performance isn't roughly an order of magnitude faster thanks to fusion optimizations... |
| 05:41:20 | <[Leary]> | I suspect some literals are defaulting to Integer. |
| 05:41:35 | → | billchenchina joins (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) |
| 05:42:16 | <c_wraith> | Oh, right. Never did solve why erty's thing is showing the wrong answer |
| 05:42:19 | <monochrom> | No, there is no Integer in core. In fact, not even Int. It has 8373# directly. |
| 05:42:34 | → | chomwitt joins (~chomwitt@2a02:587:7a03:f500:1ac0:4dff:fedb:a3f1) |
| 05:42:35 | <c_wraith> | Oh, it doesn't. I copied the wrong number |
| 05:42:37 | <c_wraith> | hah |
| 05:43:11 | <erty> | c_wraith: My bad, I was using smaller input. With biiger input size, it took my sumIt function took 0.252s and your foldl took 0.126s |
| 05:43:18 | <c_wraith> | there, now it's down to the smallest time unit time can report |
| 05:43:44 | <c_wraith> | obviously, this is a use case for criterion. :) |
| 05:44:03 | <monochrom> | c_wraith: Were you looking at the commented-out code and using 10089850? :) |
| 05:44:08 | <c_wraith> | yep |
| 05:44:51 | <monochrom> | I was alerted to that only because I also took a look at the js code and saw comments about "can't test bigger input because stack overflow". |
| 05:45:09 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 05:45:28 | <c_wraith> | haha. yes, JS engines tend to be bad at recursion |
| 05:46:00 | × | SethTisue quits (sid14912@id-14912.ilkley.irccloud.com) (Server closed connection) |
| 05:46:04 | <erty> | js errors when give it input sizw of 8374 |
| 05:46:08 | → | SethTisue joins (sid14912@id-14912.ilkley.irccloud.com) |
| 05:50:01 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
| 05:51:58 | × | ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (Ping timeout: 260 seconds) |
| 05:52:05 | × | sand-witch quits (~m-mzmz6l@vmi833741.contaboserver.net) (Server closed connection) |
| 05:52:22 | → | sand-witch joins (~m-mzmz6l@vmi833741.contaboserver.net) |
| 05:54:33 | × | cln_ quits (cln@wtf.cx) (Server closed connection) |
| 05:54:50 | → | cln_ joins (cln@wtf.cx) |
| 06:00:23 | × | thegeekinside quits (~thegeekin@189.180.53.210) (Remote host closed the connection) |
| 06:04:09 | → | ddellacosta joins (~ddellacos@ool-44c738de.dyn.optonline.net) |
| 06:08:13 | → | _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
| 06:10:34 | × | Natch| quits (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) (Server closed connection) |
| 06:10:46 | → | zetef joins (~quassel@95.77.17.251) |
| 06:10:51 | × | rosco quits (~rosco@175.136.157.149) (Quit: Lost terminal) |
| 06:11:47 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 06:11:58 | ← | erty parts (~user@user/aeroplane) (ERC 5.4 (IRC client for GNU Emacs 28.2)) |
| 06:15:52 | → | Natch joins (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) |
| 06:19:01 | → | cheater_ joins (~Username@user/cheater) |
| 06:19:03 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 246 seconds) |
| 06:21:11 | × | lottaquestions quits (~nick@2607:fa49:503d:b200:6f8c:dc97:9c02:d6b9) (Quit: Konversation terminated!) |
| 06:21:26 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 06:21:33 | → | lottaquestions joins (~nick@2607:fa49:503d:b200:103e:31e4:ac33:5629) |
| 06:22:56 | × | cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds) |
| 06:22:59 | cheater_ | is now known as cheater |
| 06:23:27 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 06:25:03 | × | amir quits (sid22336@user/amir) (Server closed connection) |
| 06:25:12 | → | amir joins (sid22336@user/amir) |
| 06:26:17 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
| 06:26:35 | × | lottaquestions quits (~nick@2607:fa49:503d:b200:103e:31e4:ac33:5629) (Read error: Connection reset by peer) |
| 06:27:01 | → | lottaquestions joins (~nick@2607:fa49:503d:b200:103e:31e4:ac33:5629) |
| 06:30:12 | × | user2 quits (~user@162.255.84.96) (Server closed connection) |
| 06:30:34 | → | user2 joins (~user@162.255.84.96) |
| 06:31:59 | × | lottaquestions quits (~nick@2607:fa49:503d:b200:103e:31e4:ac33:5629) (Quit: Konversation terminated!) |
| 06:32:22 | → | lottaquestions joins (~nick@2607:fa49:503d:b200:103e:31e4:ac33:5629) |
| 06:32:33 | × | red-snail quits (~snail@static.151.210.203.116.clients.your-server.de) (Server closed connection) |
| 06:34:26 | → | red-snail joins (~snail@static.151.210.203.116.clients.your-server.de) |
| 06:34:51 | × | lottaquestions quits (~nick@2607:fa49:503d:b200:103e:31e4:ac33:5629) (Client Quit) |
| 06:35:13 | → | lottaquestions joins (~nick@2607:fa49:503d:b200:103e:31e4:ac33:5629) |
| 06:35:29 | × | kraftwerk28 quits (~kraftwerk@164.92.219.160) (Server closed connection) |
| 06:35:43 | → | kraftwerk28 joins (~kraftwerk@164.92.219.160) |
| 06:37:02 | × | opus quits (~nil@user/opus) (Server closed connection) |
| 06:38:49 | → | opus joins (~nil@user/opus) |
| 06:43:36 | × | vglfr quits (~vglfr@78.26.242.160) (Read error: Connection reset by peer) |
| 06:44:25 | → | vglfr joins (~vglfr@78.26.242.160) |
| 06:45:29 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 06:50:38 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 252 seconds) |
| 06:53:27 | × | nonzen quits (~nonzen@user/nonzen) (Server closed connection) |
| 06:53:43 | → | nonzen joins (~nonzen@user/nonzen) |
| 06:54:45 | × | zetef quits (~quassel@95.77.17.251) (Ping timeout: 246 seconds) |
| 06:55:37 | → | zetef joins (~quassel@95.77.17.251) |
| 06:56:33 | × | mankyKitty quits (sid31287@id-31287.helmsley.irccloud.com) (Server closed connection) |
| 06:56:42 | → | mankyKitty joins (sid31287@id-31287.helmsley.irccloud.com) |
| 06:56:56 | → | acidjnk joins (~acidjnk@p200300d6e72b9321349e196aee999b14.dip0.t-ipconnect.de) |
| 06:57:24 | × | [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
| 06:57:25 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 06:57:33 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 06:58:44 | × | foul_owl quits (~kerry@185.219.141.164) (Server closed connection) |
| 06:59:09 | → | foul_owl joins (~kerry@185.219.141.164) |
| 07:05:14 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds) |
| 07:05:43 | → | euleritian joins (~euleritia@dynamic-002-247-250-221.2.247.pool.telefonica.de) |
| 07:12:07 | → | misterfish joins (~misterfis@84-53-85-146.bbserv.nl) |
| 07:17:13 | × | turlando quits (~turlando@user/turlando) (Server closed connection) |
| 07:17:29 | → | turlando joins (~turlando@user/turlando) |
| 07:18:53 | × | vgtw_ quits (~vgtw@user/vgtw) (Server closed connection) |
| 07:19:26 | <probie> | How can I tell cabal to statically link a c library without getting a warning? If I have `cc-options: -l:libfoo.a` I get warning saying to use `extra-libraries: :libfoo.a`, but that doesn't work |
| 07:19:44 | → | vgtw joins (~vgtw@user/vgtw) |
| 07:19:58 | × | hrberg quits (~quassel@171.79-160-161.customer.lyse.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 07:20:03 | × | Ram-Z quits (Ram-Z@2a01:7e01::f03c:91ff:fe57:d2df) (Server closed connection) |
| 07:20:17 | → | hrberg joins (~quassel@171.79-160-161.customer.lyse.net) |
| 07:20:27 | → | Ram-Z joins (Ram-Z@2a01:7e01::f03c:91ff:fe57:d2df) |
| 07:28:56 | → | Simikando joins (~Simikando@adsl-dyn216.91-127-84.t-com.sk) |
| 07:34:16 | × | ddb quits (ddb@tilde.club) (Server closed connection) |
| 07:34:35 | → | ddb joins (ddb@tilde.club) |
| 07:34:47 | × | yahb2 quits (~yahb2@2a01:4f8:c0c:5c7b::2) (Server closed connection) |
| 07:35:09 | → | yahb2 joins (~yahb2@2a01:4f8:c0c:5c7b::2) |
| 07:35:09 | ChanServ | sets mode +v yahb2 |
| 07:38:49 | × | zetef quits (~quassel@95.77.17.251) (Ping timeout: 256 seconds) |
| 07:41:55 | → | lhpitn joins (~tn@mail.lebenshilfe-pi.de) |
| 07:43:01 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 07:47:11 | × | MironZ quits (~MironZ@nat-infra.ehlab.uk) (Server closed connection) |
| 07:47:30 | → | MironZ joins (~MironZ@nat-infra.ehlab.uk) |
| 07:48:10 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
| 07:49:45 | × | dsal quits (sid13060@id-13060.lymington.irccloud.com) (Server closed connection) |
| 07:49:54 | → | dsal joins (sid13060@id-13060.lymington.irccloud.com) |
| 07:51:08 | → | cheater_ joins (~Username@user/cheater) |
| 07:51:16 | → | lortabac joins (~lorenzo@2a01:e0a:541:b8f0:9ab2:6651:31a9:442a) |
| 07:53:25 | → | zetef joins (~quassel@95.77.17.251) |
| 07:54:10 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 07:55:15 | × | cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds) |
| 07:55:24 | cheater_ | is now known as cheater |
| 07:56:05 | × | kaol quits (~kaol@94-237-42-30.nl-ams1.upcloud.host) (Server closed connection) |
| 07:56:12 | → | kaol joins (~kaol@94-237-42-30.nl-ams1.upcloud.host) |
| 07:58:08 | → | cheater_ joins (~Username@user/cheater) |
| 08:01:40 | → | oo_miguel joins (~Thunderbi@78-11-179-96.static.ip.netia.com.pl) |
| 08:01:51 | × | pie_ quits (~pie_bnc@user/pie/x-2818909) (Server closed connection) |
| 08:02:02 | → | pie_ joins (~pie_bnc@user/pie/x-2818909) |
| 08:02:10 | × | cheater quits (~Username@user/cheater) (Ping timeout: 260 seconds) |
| 08:02:15 | cheater_ | is now known as cheater |
| 08:04:21 | → | fendor joins (~fendor@2a02:8388:1640:be00:2528:5dc7:a36e:9b87) |
| 08:14:41 | <sclv> | drop the colon before libfoo.a ? |
| 08:15:17 | × | Simikando quits (~Simikando@adsl-dyn216.91-127-84.t-com.sk) (Ping timeout: 240 seconds) |
| 08:16:48 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 08:18:27 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:2945:3959:f06e:7711) (Remote host closed the connection) |
| 08:19:05 | → | cheater_ joins (~Username@user/cheater) |
| 08:19:52 | × | cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds) |
| 08:20:01 | cheater_ | is now known as cheater |
| 08:20:53 | × | Buliarous quits (~gypsydang@46.232.210.139) (Server closed connection) |
| 08:21:56 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 252 seconds) |
| 08:23:02 | → | CiaoSen joins (~Jura@2a05:5800:283:dc00:2a3a:4dff:fe84:dbd5) |
| 08:25:43 | × | zetef quits (~quassel@95.77.17.251) (Ping timeout: 268 seconds) |
| 08:30:20 | → | Simikando joins (~Simikando@adsl-dyn216.91-127-84.t-com.sk) |
| 08:31:54 | × | bsima quits (~bsima@143.198.118.179) (Server closed connection) |
| 08:32:14 | → | bsima joins (~bsima@143.198.118.179) |
| 08:38:05 | → | sagax joins (~sagax_nb@user/sagax) |
| 08:39:53 | × | swistak quits (~swistak@185.21.216.141) (Server closed connection) |
| 08:40:09 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 08:40:10 | → | swistak joins (~swistak@185.21.216.141) |
| 08:40:53 | → | gmg joins (~user@user/gehmehgeh) |
| 08:43:59 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds) |
| 08:45:03 | × | Adran quits (~adran@botters/adran) (Server closed connection) |
| 08:45:27 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 268 seconds) |
| 08:48:02 | → | Pickchea joins (~private@user/pickchea) |
| 08:48:09 | → | Adran joins (~adran@botters/adran) |
| 08:50:00 | → | vpan joins (~vpan@mail.elitnet.lt) |
| 08:52:34 | → | zetef joins (~quassel@95.77.17.251) |
| 08:53:36 | × | Putonlalla quits (~Putonlall@it-cyan.it.jyu.fi) (Server closed connection) |
| 08:54:09 | → | Putonlalla joins (~Putonlall@it-cyan.it.jyu.fi) |
| 08:56:22 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:2945:3959:f06e:7711) |
| 08:56:33 | × | Simikando quits (~Simikando@adsl-dyn216.91-127-84.t-com.sk) (Ping timeout: 268 seconds) |
| 08:59:59 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 09:04:40 | → | chele joins (~chele@user/chele) |
| 09:04:56 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 245 seconds) |
| 09:07:13 | → | cheater_ joins (~Username@user/cheater) |
| 09:08:55 | × | cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds) |
| 09:08:59 | cheater_ | is now known as cheater |
| 09:10:39 | × | bcksl quits (~bcksl@user/bcksl) (Server closed connection) |
| 09:10:58 | → | Simikando joins (~Simikando@adsl-dyn216.91-127-84.t-com.sk) |
| 09:12:52 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 09:13:13 | → | cheater_ joins (~Username@user/cheater) |
| 09:14:02 | → | bcksl joins (~bcksl@user/bcksl) |
| 09:14:23 | → | juri__ joins (~juri@79.140.115.129) |
| 09:14:30 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:2945:3959:f06e:7711) (Ping timeout: 245 seconds) |
| 09:14:55 | → | coot joins (~coot@89-69-206-216.dynamic.chello.pl) |
| 09:15:27 | × | juri_ quits (~juri@84-19-175-187.pool.ovpn.com) (Ping timeout: 246 seconds) |
| 09:17:22 | × | cheater quits (~Username@user/cheater) (Ping timeout: 260 seconds) |
| 09:17:30 | cheater_ | is now known as cheater |
| 09:19:30 | → | cstml joins (~cstml@user/cstml) |
| 09:19:59 | × | juri__ quits (~juri@79.140.115.129) (Ping timeout: 268 seconds) |
| 09:20:00 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 09:20:30 | → | juri_ joins (~juri@84-19-175-187.pool.ovpn.com) |
| 09:21:35 | × | Simikando quits (~Simikando@adsl-dyn216.91-127-84.t-com.sk) (Ping timeout: 245 seconds) |
| 09:24:46 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
| 09:29:29 | → | cheater_ joins (~Username@user/cheater) |
| 09:31:41 | × | zetef quits (~quassel@95.77.17.251) (Ping timeout: 240 seconds) |
| 09:33:00 | × | tzh quits (~tzh@c-71-193-181-0.hsd1.or.comcast.net) (Quit: zzz) |
| 09:33:10 | × | cheater quits (~Username@user/cheater) (Ping timeout: 260 seconds) |
| 09:33:54 | × | cjay quits (cjay@nerdbox.nerd2nerd.org) (Server closed connection) |
| 09:34:02 | → | cjay joins (cjay@nerdbox.nerd2nerd.org) |
| 09:34:10 | × | cheater_ quits (~Username@user/cheater) (Ping timeout: 268 seconds) |
| 09:34:33 | → | cheater_ joins (~Username@user/cheater) |
| 09:34:33 | cheater_ | is now known as cheater |
| 09:37:12 | → | mrmr15535 joins (~mrmr@user/mrmr) |
| 09:38:49 | × | mrmr1553 quits (~mrmr@user/mrmr) (Ping timeout: 260 seconds) |
| 09:38:50 | mrmr15535 | is now known as mrmr1553 |
| 09:38:58 | → | rosco joins (~rosco@175.136.157.149) |
| 09:40:32 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 09:43:42 | → | lockywolf_ joins (~lockywolf@public.lockywolf.net) |
| 09:44:29 | × | lockywolf quits (~lockywolf@public.lockywolf.net) (Ping timeout: 240 seconds) |
| 09:50:48 | → | Simikando joins (~Simikando@adsl-dyn216.91-127-84.t-com.sk) |
| 09:51:59 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 09:51:59 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Read error: Connection reset by peer) |
| 09:52:22 | → | idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 09:52:58 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 09:54:29 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 09:56:45 | × | Simikando quits (~Simikando@adsl-dyn216.91-127-84.t-com.sk) (Ping timeout: 246 seconds) |
| 09:58:25 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 276 seconds) |
| 09:58:53 | × | lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 09:59:58 | × | dunj3 quits (~dunj3@kingdread.de) (Server closed connection) |
| 10:00:08 | → | dunj3 joins (~dunj3@kingdread.de) |
| 10:07:55 | × | ft quits (~ft@p508db3bc.dip0.t-ipconnect.de) (Quit: leaving) |
| 10:11:52 | → | Jackneill joins (~Jackneill@20014C4E1E1AA20011D4085FBCF3F922.dsl.pool.telekom.hu) |
| 10:13:37 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 10:13:47 | → | zetef joins (~quassel@95.77.17.251) |
| 10:14:42 | × | econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
| 10:15:02 | → | danse-nr3 joins (~danse@151.35.108.169) |
| 10:22:21 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 10:25:09 | → | Simikando joins (~Simikando@adsl-dyn216.91-127-84.t-com.sk) |
| 10:27:33 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 10:29:08 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 10:33:55 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
| 10:34:29 | × | vglfr quits (~vglfr@78.26.242.160) (Ping timeout: 252 seconds) |
| 10:34:54 | → | vglfr joins (~vglfr@88.155.174.200) |
| 10:45:49 | × | Simikando quits (~Simikando@adsl-dyn216.91-127-84.t-com.sk) (Ping timeout: 256 seconds) |
| 10:47:05 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 10:49:51 | × | madnight quits (~madnight@static.59.103.201.195.clients.your-server.de) (Server closed connection) |
| 10:50:06 | → | madnight joins (~madnight@static.59.103.201.195.clients.your-server.de) |
| 10:53:01 | × | zetef quits (~quassel@95.77.17.251) (Ping timeout: 276 seconds) |
| 10:54:30 | × | xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 246 seconds) |
| 10:55:30 | × | vglfr quits (~vglfr@88.155.174.200) (Read error: Connection reset by peer) |
| 10:59:14 | × | idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.1.1) |
| 11:00:33 | × | lortabac quits (~lorenzo@2a01:e0a:541:b8f0:9ab2:6651:31a9:442a) (Ping timeout: 256 seconds) |
| 11:01:04 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 11:01:27 | → | Square2 joins (~Square4@user/square) |
| 11:02:35 | → | Simikando joins (~Simikando@adsl-dyn216.91-127-84.t-com.sk) |
| 11:04:54 | → | mima joins (~mmh@aftr-62-216-211-218.dynamic.mnet-online.de) |
| 11:06:05 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
| 11:08:40 | × | billchenchina quits (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) (Quit: Leaving) |
| 11:14:29 | × | SoF quits (~skius@user/skius) (Server closed connection) |
| 11:15:05 | → | SoF joins (~skius@user/skius) |
| 11:17:45 | × | Hecate quits (~mariposa@user/hecate) (Server closed connection) |
| 11:17:53 | → | Hecate joins (~mariposa@user/hecate) |
| 11:18:13 | × | ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 260 seconds) |
| 11:18:46 | → | ezzieyguywuf joins (~Unknown@user/ezzieyguywuf) |
| 11:24:04 | × | CiaoSen quits (~Jura@2a05:5800:283:dc00:2a3a:4dff:fe84:dbd5) (Ping timeout: 246 seconds) |
| 11:24:30 | × | rosco quits (~rosco@175.136.157.149) (Quit: Lost terminal) |
| 11:25:51 | <Inst> | hmmm |
| 11:25:57 | <Inst> | this is probably the solution to the Chinese Haskell problem |
| 11:26:03 | <Inst> | it's not Nick's way, or even ChShersh's way |
| 11:26:27 | <Inst> | if the production culture is very anti-Haskell because of the values preferences of businesses and developers (brute froce, labor abuse), then skip the production culture |
| 11:26:31 | <Inst> | go straight to hobbyists |
| 11:26:42 | <Inst> | "language of scientists and engineers, language that your boss uses" |
| 11:28:42 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 11:28:58 | <Inst> | if you have a culture wherein pretty art school grads stream mathematics because they love math, while production users are basically using Haskell to satisfy their curiosity, but not develop proper software engineering principles, path of least resistance is obvious |
| 11:29:08 | <Inst> | culture is snobby enough that it should work |
| 11:29:30 | <Inst> | not a "码农" language, and that's the selling point |
| 11:29:47 | → | califax joins (~califax@user/califx) |
| 11:30:53 | <Inst> | 码农 -> digital peasant |
| 11:33:10 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 11:33:27 | <ncf> | Inst: i think this belongs in #haskell-offtopic |
| 11:34:20 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 11:36:36 | <Inst> | It's relevant, but should be in there for being annoying |
| 11:39:10 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
| 11:39:18 | <hc> | What does "to stream mathematics" mean? |
| 11:41:10 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 11:43:54 | <Inst> | streaming category theory on streaming sites |
| 11:46:04 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 255 seconds) |
| 11:47:02 | × | iteratee quits (~kyle@162.218.222.207) (Server closed connection) |
| 11:47:16 | → | iteratee joins (~kyle@162.218.222.207) |
| 11:50:10 | → | lortabac joins (~lorenzo@2a01:e0a:541:b8f0:98e4:3b02:8226:63ec) |
| 11:57:22 | × | Simikando quits (~Simikando@adsl-dyn216.91-127-84.t-com.sk) (Ping timeout: 276 seconds) |
| 12:02:22 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 12:05:38 | × | dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Remote host closed the connection) |
| 12:10:44 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 12:11:05 | → | califax joins (~califax@user/califx) |
| 12:11:18 | → | dcoutts joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) |
| 12:12:02 | → | ivelten joins (~ivelten@38.252.84.3) |
| 12:13:02 | → | [_] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 12:15:53 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:2945:3959:f06e:7711) |
| 12:16:29 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 256 seconds) |
| 12:17:26 | × | danse-nr3 quits (~danse@151.35.108.169) (Ping timeout: 260 seconds) |
| 12:25:26 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 12:27:20 | × | gabiruh quits (~gabiruh@vps19177.publiccloud.com.br) (Server closed connection) |
| 12:27:36 | → | gabiruh joins (~gabiruh@vps19177.publiccloud.com.br) |
| 12:32:06 | → | danse-nr3 joins (~danse@151.35.108.169) |
| 12:37:32 | → | maturana joins (~maturana@2804:14c:5b73:403e:1e53:df5a:8cae:9317) |
| 12:47:59 | × | maturana quits (~maturana@2804:14c:5b73:403e:1e53:df5a:8cae:9317) (Remote host closed the connection) |
| 12:56:07 | × | remedan quits (~remedan@ip-94-112-0-18.bb.vodafone.cz) (Ping timeout: 246 seconds) |
| 13:01:26 | × | jjhoo quits (~jahakala@user/jjhoo) (Remote host closed the connection) |
| 13:01:26 | × | Xe quits (~cadey@perl/impostor/xe) (Server closed connection) |
| 13:01:40 | → | jjhoo joins (~jahakala@user/jjhoo) |
| 13:01:57 | → | Xe joins (~cadey@perl/impostor/xe) |
| 13:08:53 | → | xff0x joins (~xff0x@2405:6580:b080:900:edf9:6a9f:34dc:1f68) |
| 13:12:39 | → | Simikando joins (~Simikando@adsl-dyn216.91-127-84.t-com.sk) |
| 13:13:27 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 13:15:04 | → | waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 13:17:49 | → | remedan joins (~remedan@ip-94-112-0-18.bb.vodafone.cz) |
| 13:24:20 | → | akegalj joins (~akegalj@89-164-125-210.dsl.iskon.hr) |
| 13:25:39 | → | szkl joins (uid110435@id-110435.uxbridge.irccloud.com) |
| 13:30:39 | <akegalj> | (&&) is strict in its first argument and non strict in its second argument. In GHC.Base it is defined as `(&&) True True = True` . Where is a False case? Why it isn't defined exhaustive with other cases as `(&&) _ _ = False` ? Second, it says it is strict in its first argument and non-strict in its second - what gives it this property? |
| 13:36:12 | <akegalj> | Third, where is (||) defined? |
| 13:36:19 | × | Simikando quits (~Simikando@adsl-dyn216.91-127-84.t-com.sk) (Ping timeout: 255 seconds) |
| 13:41:21 | → | Simikando joins (~Simikando@adsl-dyn216.91-127-84.t-com.sk) |
| 13:42:03 | → | idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 13:42:16 | × | phma quits (phma@2001:5b0:2144:1ea8:391e:cdf9:d3a7:e03) (Read error: Connection reset by peer) |
| 13:42:52 | <exarkun> | akegalj: In GHC.Classes it is defined differently, https://hackage.haskell.org/package/ghc-prim-0.11.0/docs/src/GHC.Classes.html#%26%26 |
| 13:43:00 | <exarkun> | And (||) is just below it |
| 13:43:14 | → | phma joins (~phma@host-67-44-208-96.hnremote.net) |
| 13:43:54 | <exarkun> | The definition of && there is strict in its first argument because it pattern matches on the constructors which forces them. Since it does not pattern match on the second argument, it doesn't. |
| 13:44:54 | <ncf> | what you're looking at is inside a preprocessor'd out block that says "for use when compiling GHC.Base itself doesn't work" |
| 13:45:10 | <tomsmeding> | though it's still strange that the definitions contained therein are kinda broken |
| 13:45:39 | <tomsmeding> | 'data [] a = MkNil'? |
| 13:46:01 | <ncf> | i don't know what the purpose of that block is |
| 13:46:18 | <tomsmeding> | maybe to just define some names, regardless of what precisely they're defined _as_ |
| 13:46:28 | <akegalj> | exarkun: ok, those definitions makes sense and as you said... patern match there forces first to be strict. Ok, makes sense |
| 13:47:07 | <tomsmeding> | '[]' and '(:)' are probably built-in syntax, which would be why when debugging random GHC.Base breakage, one wouldn't need to define them somehow |
| 13:47:08 | <tomsmeding> | or something |
| 13:47:45 | <akegalj> | ncf: right, missed that part |
| 13:49:00 | <akegalj> | tomsmeding: yes, that list definition seems odd |
| 13:49:39 | → | Fischmiep joins (~Fischmiep@user/Fischmiep) |
| 13:55:54 | × | lg188 quits (~lg188@82.18.98.230) (Ping timeout: 260 seconds) |
| 13:56:50 | → | lg188 joins (~lg188@82.18.98.230) |
| 13:59:36 | × | danse-nr3 quits (~danse@151.35.108.169) (Read error: Connection reset by peer) |
| 13:59:54 | → | danse-nr3 joins (~danse@151.43.107.30) |
| 14:00:28 | → | edr joins (~edr@user/edr) |
| 14:04:45 | → | todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de) |
| 14:05:42 | × | myxos quits (~myxos@cpe-65-28-251-121.cinci.res.rr.com) (Remote host closed the connection) |
| 14:05:50 | → | chele_ joins (~chele@user/chele) |
| 14:06:25 | → | myxos joins (~myxos@065-028-251-121.inf.spectrum.com) |
| 14:07:29 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 14:09:14 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 14:09:22 | → | erty joins (~user@user/aeroplane) |
| 14:15:09 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 14:16:06 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 256 seconds) |
| 14:20:25 | × | Simikando quits (~Simikando@adsl-dyn216.91-127-84.t-com.sk) (Ping timeout: 255 seconds) |
| 14:29:32 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 14:40:38 | × | duncan quits (~duncan@nat-server.ehlab.uk) (Server closed connection) |
| 14:40:58 | → | duncan joins (~duncan@nat-server.ehlab.uk) |
| 14:42:43 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 14:43:48 | → | Simikando joins (~Simikando@adsl-dyn216.91-127-84.t-com.sk) |
| 14:44:05 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:2945:3959:f06e:7711) (Ping timeout: 245 seconds) |
| 14:50:55 | × | Square2 quits (~Square4@user/square) (Ping timeout: 276 seconds) |
| 14:51:09 | × | vpan quits (~vpan@mail.elitnet.lt) (Quit: Leaving.) |
| 14:51:42 | × | Simikando quits (~Simikando@adsl-dyn216.91-127-84.t-com.sk) (Quit: Leaving) |
| 14:52:10 | → | Simikando joins (~Simikando@adsl-dyn216.91-127-84.t-com.sk) |
| 14:55:45 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 15:04:34 | × | Simikando quits (~Simikando@adsl-dyn216.91-127-84.t-com.sk) (Ping timeout: 276 seconds) |
| 15:05:07 | [_] | is now known as [itchyjunk] |
| 15:06:51 | × | danse-nr3 quits (~danse@151.43.107.30) (Ping timeout: 246 seconds) |
| 15:07:39 | → | danse-nr3 joins (~danse@151.43.107.30) |
| 15:08:12 | → | Simikando joins (~Simikando@adsl-dyn216.91-127-84.t-com.sk) |
| 15:14:14 | × | chele_ quits (~chele@user/chele) (Remote host closed the connection) |
| 15:17:58 | × | misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 268 seconds) |
| 15:18:23 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 256 seconds) |
| 15:18:54 | → | billchenchina joins (~billchenc@103.152.35.21) |
| 15:25:35 | × | acro quits (~acro@user/acro) (Server closed connection) |
| 15:26:30 | → | acro joins (~acro@user/acro) |
| 15:29:40 | × | terrorjack quits (~terrorjac@2a01:4f8:c17:87f8::) (Quit: Ping timeout (120 seconds)) |
| 15:34:42 | × | ivelten quits (~ivelten@38.252.84.3) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 15:35:03 | × | szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 15:35:06 | → | ivelten joins (~ivelten@38.252.84.3) |
| 15:36:34 | → | siw5ohs0 joins (~aiw5ohs0@user/aiw5ohs0) |
| 15:36:46 | ← | siw5ohs0 parts (~aiw5ohs0@user/aiw5ohs0) (Leaving) |
| 15:36:56 | × | Simikando quits (~Simikando@adsl-dyn216.91-127-84.t-com.sk) (Remote host closed the connection) |
| 15:37:18 | → | Simikando joins (~Simikando@adsl-dyn216.91-127-84.t-com.sk) |
| 15:39:30 | × | ivelten quits (~ivelten@38.252.84.3) (Ping timeout: 245 seconds) |
| 15:42:48 | × | Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Server closed connection) |
| 15:43:01 | × | euleritian quits (~euleritia@dynamic-002-247-250-221.2.247.pool.telefonica.de) (Read error: Connection reset by peer) |
| 15:43:18 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 15:43:44 | → | terrorjack joins (~terrorjac@2a01:4f8:c17:87f8::) |
| 15:44:02 | → | Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius) |
| 15:46:04 | × | Simikando quits (~Simikando@adsl-dyn216.91-127-84.t-com.sk) (Remote host closed the connection) |
| 15:49:00 | × | finsternis quits (~X@23.226.237.192) (Server closed connection) |
| 15:49:22 | → | finsternis joins (~X@23.226.237.192) |
| 15:50:29 | × | gooba quits (~gooba@90-231-13-185-no3430.tbcn.telia.com) (Remote host closed the connection) |
| 15:50:57 | → | gooba joins (~gooba@90-231-13-185-no3430.tbcn.telia.com) |
| 15:53:56 | × | gooba quits (~gooba@90-231-13-185-no3430.tbcn.telia.com) (Remote host closed the connection) |
| 15:54:54 | → | gooba joins (~gooba@90-231-13-185-no3430.tbcn.telia.com) |
| 16:01:39 | × | gooba quits (~gooba@90-231-13-185-no3430.tbcn.telia.com) (Remote host closed the connection) |
| 16:02:46 | → | gooba joins (~gooba@90-231-13-185-no3430.tbcn.telia.com) |
| 16:03:28 | → | Simikando joins (~Simikando@adsl-dyn216.91-127-84.t-com.sk) |
| 16:06:37 | × | waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 255 seconds) |
| 16:07:37 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 276 seconds) |
| 16:07:46 | → | euleritian joins (~euleritia@dynamic-002-247-250-221.2.247.pool.telefonica.de) |
| 16:07:49 | → | misterfish joins (~misterfis@84-53-85-146.bbserv.nl) |
| 16:12:06 | → | billchenchina- joins (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) |
| 16:12:15 | × | woffs quits (3cd46299b2@woffs.de) (Server closed connection) |
| 16:15:09 | → | woffs joins (3cd46299b2@woffs.de) |
| 16:15:25 | × | billchenchina quits (~billchenc@103.152.35.21) (Ping timeout: 276 seconds) |
| 16:16:12 | → | econo_ joins (uid147250@id-147250.tinside.irccloud.com) |
| 16:17:52 | × | idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.1.1) |
| 16:20:20 | × | euleritian quits (~euleritia@dynamic-002-247-250-221.2.247.pool.telefonica.de) (Read error: Connection reset by peer) |
| 16:20:37 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 16:21:30 | × | Simikando quits (~Simikando@adsl-dyn216.91-127-84.t-com.sk) (Ping timeout: 260 seconds) |
| 16:22:42 | × | lortabac quits (~lorenzo@2a01:e0a:541:b8f0:98e4:3b02:8226:63ec) (Quit: WeeChat 3.5) |
| 16:24:50 | × | Vajb quits (~Vajb@2001:999:785:c11e:a1b8:59fa:dee7:e490) (Ping timeout: 252 seconds) |
| 16:25:10 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 276 seconds) |
| 16:25:22 | → | euleritian joins (~euleritia@dynamic-002-247-250-221.2.247.pool.telefonica.de) |
| 16:29:26 | → | gooba_ joins (~gooba@90-231-13-185-no3430.tbcn.telia.com) |
| 16:30:50 | × | gooba quits (~gooba@90-231-13-185-no3430.tbcn.telia.com) (Ping timeout: 260 seconds) |
| 16:30:51 | × | euleritian quits (~euleritia@dynamic-002-247-250-221.2.247.pool.telefonica.de) (Read error: Connection reset by peer) |
| 16:31:08 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 16:37:13 | × | gooba_ quits (~gooba@90-231-13-185-no3430.tbcn.telia.com) (Remote host closed the connection) |
| 16:38:49 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 276 seconds) |
| 16:38:59 | → | euleritian joins (~euleritia@dynamic-002-247-250-221.2.247.pool.telefonica.de) |
| 16:39:24 | → | vglfr joins (~vglfr@88.154.57.62) |
| 16:40:50 | → | ivelten joins (~ivelten@38.252.84.3) |
| 16:40:55 | → | ft joins (~ft@mue-88-130-106-120.dsl.tropolys.de) |
| 16:41:46 | × | euleritian quits (~euleritia@dynamic-002-247-250-221.2.247.pool.telefonica.de) (Read error: Connection reset by peer) |
| 16:41:49 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:4c99:f3ba:7425:36f4) |
| 16:42:03 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 16:45:05 | × | acidjnk quits (~acidjnk@p200300d6e72b9321349e196aee999b14.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 16:46:53 | → | sabino joins (~sabino@user/sabino) |
| 16:51:02 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 16:52:43 | × | ft quits (~ft@mue-88-130-106-120.dsl.tropolys.de) (Quit: leaving) |
| 16:54:10 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 260 seconds) |
| 16:55:35 | → | ft joins (~ft@mue-88-130-106-120.dsl.tropolys.de) |
| 16:56:34 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 255 seconds) |
| 17:00:04 | × | fendor quits (~fendor@2a02:8388:1640:be00:2528:5dc7:a36e:9b87) (Remote host closed the connection) |
| 17:04:06 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:4c99:f3ba:7425:36f4) (Remote host closed the connection) |
| 17:04:21 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:4c99:f3ba:7425:36f4) |
| 17:05:33 | <danse-nr3> | hmm got a triple ... there ought to be a better way... |
| 17:12:56 | → | notzmv joins (~zmv@user/notzmv) |
| 17:14:45 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 17:16:16 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 264 seconds) |
| 17:17:42 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 17:18:16 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 17:19:39 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
| 17:21:54 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection) |
| 17:22:16 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 17:26:33 | → | gooba joins (~gooba@90-231-13-185-no3430.tbcn.telia.com) |
| 17:28:43 | <EvanR> | you'll need Trifunctor now |
| 17:29:12 | <danse-nr3> | (: |
| 17:31:45 | <erty> | ski: I finally understood `unbounded space`, it really improves code execution time. And with that I believe, for code to be performant, we have to think beyond just algorithmic complexity. |
| 17:32:22 | danse-nr3 | raises eyebrow |
| 17:33:15 | <EvanR> | in haskell the amount of time consumed by the garbage collector is related to how much heap memory is in use, so haskell performance has to be reasoned about in spacetime combined |
| 17:33:36 | <danse-nr3> | oh, for the garbage collector. Makes sense |
| 17:35:14 | <c_wraith> | monochrom: you'll be pleased(?) to know that when I moved to benchmarking the various sum functions with criterion, the higher-order use of it made foldl way slower than foldl' again. Which is why I prefer actually telling the compiler what's going on. |
| 17:39:09 | × | vglfr quits (~vglfr@88.154.57.62) (Read error: Connection reset by peer) |
| 17:40:08 | <EvanR> | is the rule of thumb foldl might optimize to something like foldl' or it might not xD |
| 17:40:38 | <c_wraith> | yes |
| 17:40:45 | <EvanR> | good rule |
| 17:41:18 | <c_wraith> | Interesting... []'s foldable instance has a slow implementation of sum... unless it gets to participate in list fusion |
| 17:41:38 | <EvanR> | there was a mailist list debate on that iirc |
| 17:41:43 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 17:41:46 | <EvanR> | mailing* |
| 17:41:59 | × | Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Server closed connection) |
| 17:42:16 | × | akegalj quits (~akegalj@89-164-125-210.dsl.iskon.hr) (Quit: leaving) |
| 17:42:19 | → | Sciencentistguy joins (~sciencent@hacksoc/ordinary-member) |
| 17:42:34 | <c_wraith> | I guess people were concerned about using foldl' by default on lists of types where (+) is non-strict? |
| 17:42:46 | <c_wraith> | err. lists of values of a type where... |
| 17:43:15 | <EvanR> | https://mail.haskell.org/pipermail/libraries/2020-October/030862.html |
| 17:43:37 | <EvanR> | it was kind of hard for me to follow the reasoning |
| 17:45:23 | × | oo_miguel quits (~Thunderbi@78-11-179-96.static.ip.netia.com.pl) (Ping timeout: 260 seconds) |
| 17:46:27 | → | Square joins (~Square@user/square) |
| 17:46:40 | <c_wraith> | erty: This was inspired by your testing. The criterion library is pretty cool. code: https://paste.tomsmeding.com/b3WRbJmf output: https://paste.tomsmeding.com/o2lAkr45 |
| 17:46:58 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 255 seconds) |
| 17:47:15 | <c_wraith> | erty: you can ignore sumIt3. I was just being silly and rewriting foldl' by hand. |
| 17:48:18 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds) |
| 17:48:38 | → | euleritian joins (~euleritia@dynamic-002-247-250-221.2.247.pool.telefonica.de) |
| 17:50:08 | <c_wraith> | My major conclusion from that benchmarking is: it's amazing how much of a difference list fusion makes when it is allowed to happen |
| 17:50:11 | <ski> | erty : "we have to think beyond just algorithmic complexity" -- how/why ? |
| 17:50:40 | <ski> | erty : this is algorithmic space complexity, no ? so why would we need to think beyond that (under these considerations) ? |
| 17:51:07 | × | ridcully quits (~ridcully@p57b5294c.dip0.t-ipconnect.de) (Server closed connection) |
| 17:51:30 | → | ridcully joins (~ridcully@p57b5294c.dip0.t-ipconnect.de) |
| 17:51:58 | <erty> | c_wraith: criterion looks indeed great. But for now I will suffice with `time` command |
| 17:52:48 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
| 17:53:14 | × | euleritian quits (~euleritia@dynamic-002-247-250-221.2.247.pool.telefonica.de) (Read error: Connection reset by peer) |
| 17:53:32 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 17:53:43 | <ski> | c_wraith : fwiw, you could have supplied both files in the same paste |
| 17:54:44 | <erty> | ski: This might me very lame, but the space and time complexity for my `sumPlus` function (λ> sumPlus acc (x:xs) = sumPlus (acc+x) xs) [http://ix.io/4LIN] are both, I think, O(n). But by adding a `!` to acc, are the complexities still not the same. |
| 17:54:48 | <probie> | The solution to having a slow implementation of sum is to just not have sum |
| 17:55:09 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 17:55:34 | <erty> | By adding !, we have changed something beyond space and time |
| 17:55:56 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 17:56:02 | zer0bitz_ | is now known as zer0bitz |
| 17:56:06 | <erty> | I mean not time, we have improved that |
| 17:56:10 | <c_wraith> | erty: well, there's the interaction of using more space taking more time in non-obvious ways |
| 17:56:28 | <probie> | erty: by adding `!` you're now in constant space |
| 17:56:28 | <c_wraith> | erty: but that's still captured by analyzing space and time use carefully |
| 17:56:42 | <ski> | old <hpaste.org>,<lpaste.net> allowed people to add annotations (separate paste files) to the same paste page. <paste.tomsmeding.com> doesn't have that, though |
| 17:57:49 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 17:58:04 | <geekosaur> | eh? it certainly has multifile pastes |
| 17:58:23 | <ski> | erty : "the space and time complexity for my `sumPlus` function .. are both, I think, O(n)." -- with explicit strictness, you reduce the space to `O(1)' |
| 17:58:36 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 17:58:36 | <geekosaur> | "+ Add another file" bottom left |
| 17:58:55 | <c_wraith> | geekosaur: oh, cool. I ignored that button. But that's still not the same as adding additional things later (with new URLs) that the older ones had |
| 17:58:58 | × | danse-nr3 quits (~danse@151.43.107.30) (Read error: Connection reset by peer) |
| 17:59:51 | <ski> | geekosaur : yes it does, but not after-the-fact |
| 18:01:26 | <ski> | (yea, iirc, you could both see the annotations at the original paste page, and also see the annotation as a separate page at its own URL) |
| 18:05:46 | → | qqq joins (~qqq@92.43.167.61) |
| 18:06:29 | <erty> | I think writing code in Haskell involves a bit different mental model. When I write an algorithm, I think in terms of ADTs. But here, you also have to take in considerations for laziness. Thats why I said "we have to think beyond just algorithmic complexity" |
| 18:07:08 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 18:07:28 | <c_wraith> | It's still part of the complexity. Haskell isn't the only language where you have to consider space usage. But it *is* different, in that you need to think about demand patterns and proper evaluation |
| 18:07:40 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds) |
| 18:08:45 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 18:11:11 | <ski> | "involves a bit different mental model" -- yes, you have to understand that the result isn't (necessarily) computed all at once, but may "trickle out" in chunks (on a tree-branching fashion, in general), and you can at any point decide to not continue down such a path, abandoning the computation avoiding the remaining cost. while, if you reuse, it'll get computed no more than once |
| 18:11:37 | <ski> | (the last bit assumes laziness, of course, which is not a language guarantee, but something implementations tend to support) |
| 18:12:25 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 276 seconds) |
| 18:12:38 | <ski> | a function transforms output demand into (some computation and) input demand |
| 18:13:36 | <ski> | `reverse' and `foldl' are "builky" in that they traverse the whole input list, before releasing the result all at once. otoh `(++)' is incremental, and `foldr' can be (depending on the callback), pay-as-you-go |
| 18:13:47 | <ski> | (er, "bulky") |
| 18:15:22 | <ski> | basically, if you do (only) tail recursion, you're bulky (although you can be bulky without tail recursion). in a strict functional language, people would strive to (for the most part, there are situations where one doesn't want to) be tail recursive, typically using an accumulator |
| 18:15:38 | <c_wraith> | it's even more complicated than that, as `reverse' is bulky only in the list structure. It doesn't even touch the list elements |
| 18:16:00 | <ski> | in Haskell, another common approach is to be incremental instead, to hide the recursive calls behind some computation that hasn't happened yet, that the caller may or may not force |
| 18:16:07 | <ski> | yep |
| 18:18:42 | <ski> | `print (take 10 (filter odd (map triangular [0 ..])))' will act as a loop, whose control is in `print', individual elements percolates up the "pipeline" one at a time. this can e.g. be used to process files in a streaming fashion, even if the whole file doesn't fit into RAM |
| 18:18:49 | → | manwithluck` joins (manwithluc@gateway/vpn/protonvpn/manwithluck) |
| 18:19:34 | <ski> | the intermediate list cons cells will be GCed as we go. if fusion kicks in, you'll even avoid the intermediate lists, letting the producer directly hand off elements to the transformers and the consumer |
| 18:21:26 | <ski> | (however, the streaming thing is also a bit brittle, in that if you hold on to some point in the list for a long period of time, that prevents it from being GCed, and so can cause a "space leak" (not in the sense of forgetting to free some memory whose reference pointer you've forgotten, but in the sense of keeping a hold of that reference for longer than you intended to)) |
| 18:21:42 | → | shapr joins (~user@2600:1700:c640:3100:5b4c:3811:4e1e:b4e5) |
| 18:22:48 | <EvanR> | that kind of thing also happens in "strict" languages like javascript |
| 18:22:51 | <ski> | (fwiw, `triangular n = div (n * (n + 1)) 2', iow `sum [0 .. n]') |
| 18:22:58 | <EvanR> | if you hold onto something accidentally you have a space leak |
| 18:23:17 | <ski> | yep, you can do incremental processing also in strict. but it's not quite as easy |
| 18:23:23 | <ski> | mm, that too |
| 18:23:52 | <ski> | (hence why people often set variables to `null' when they're done with some data) |
| 18:24:16 | <EvanR> | shoulda used linear types! |
| 18:25:23 | × | paddymahoney quits (~paddymaho@cpe883d24bcf597-cmbc4dfb741f80.cpe.net.cable.rogers.com) (Server closed connection) |
| 18:25:46 | <ski> | Mercury has an inst (instantiation state) `dead' .. it could possibly be useful to have an explicit predicate which you can call to enforce that some datum is dead at a certain time, and whose operational behaviour would be to replace the address with a dummy address (`NULL') |
| 18:26:03 | <c_wraith> | yeah, something like a resizable array data structure in many languages will easily hold on to values long after it should have unless you explicitly null out removed entries |
| 18:26:30 | <ski> | (iow, if the datum is not dead, you'd get a compile-time error. so it's a sanity check, but also a help for the GC) |
| 18:27:05 | → | paddymahoney joins (~paddymaho@cpe883d24bcf597-cmbc4dfb741f80.cpe.net.cable.rogers.com) |
| 18:27:31 | ski | . o O ( weak references,weak associations (for finite maps) ) |
| 18:27:43 | × | gooba quits (~gooba@90-231-13-185-no3430.tbcn.telia.com) (Remote host closed the connection) |
| 18:27:52 | → | Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) |
| 18:28:21 | × | manwithluck` quits (manwithluc@gateway/vpn/protonvpn/manwithluck) (Quit: THE END) |
| 18:28:39 | → | gooba joins (~gooba@90-231-13-185-no3430.tbcn.telia.com) |
| 18:29:25 | → | idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 18:29:36 | <ski> | occasionally, i've thought it could be useful to have a `Thunk a', with `newThunk :: a -> IO (Thunk a)',`forceThunk :: Thunk a -> a',`resetThunk :: Thunk a -> IO ()', to be used when you have some datum which takes up a lot of space, and you'd like to be able to reclaim that, and perhaps later perform the computation computing it again |
| 18:29:51 | <EvanR> | yes |
| 18:30:04 | <EvanR> | apparently that's not something ghc can just do |
| 18:30:48 | <ski> | (perhaps `newThunk' wouldn't need to be in `IO' .. but if there's `instance Eq (Thunk a)', it would need to, similarly to `IORef', and `IVar') |
| 18:31:06 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds) |
| 18:31:20 | ← | erty parts (~user@user/aeroplane) (ERC 5.4 (IRC client for GNU Emacs 28.2)) |
| 18:31:30 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:4c99:f3ba:7425:36f4) (Remote host closed the connection) |
| 18:32:08 | → | euleritian joins (~euleritia@dynamic-002-247-250-221.2.247.pool.telefonica.de) |
| 18:32:13 | <EvanR> | you can always use stable names to test identity of Thunks |
| 18:32:16 | <EvanR> | in IO |
| 18:32:51 | <EvanR> | but I'm not sure how the non-IO newThunk would "work" |
| 18:32:59 | × | ivelten quits (~ivelten@38.252.84.3) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 18:33:06 | <EvanR> | reliably |
| 18:33:27 | <ski> | yea, perhaps it wouldn't .. not sure |
| 18:34:00 | <c_wraith> | I don't think you can write it as a Haskell library, but maybe C-- library? |
| 18:34:15 | <c_wraith> | Now that GHC supports those... |
| 18:34:27 | <ski> | @hackage ivar-simple |
| 18:34:27 | <lambdabot> | https://hackage.haskell.org/package/ivar-simple |
| 18:35:08 | <EvanR> | ivar is awesome |
| 18:35:48 | <ski> | note `new :: IO (IVar a)',`write :: IVar a -> a -> IO a' ("Raises a `BlockedIndefinitelyOnIVar' exception if the variable already has a value"),`read :: IVar a -> a' and `instance Eq (IVar a)' |
| 18:36:07 | <ski> | useful when you want identity (e.g. for graph traversal), but you don't need mutability |
| 18:36:23 | <ski> | and having `read' not in `IO' there is quite nice |
| 18:36:24 | → | dhil joins (~dhil@2001:8e0:2014:3100:a0:aa7c:41ab:e261) |
| 18:36:49 | <ski> | unlike |
| 18:36:51 | <ski> | @hackage data-ivar |
| 18:36:51 | <lambdabot> | https://hackage.haskell.org/package/data-ivar |
| 18:36:55 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 255 seconds) |
| 18:37:29 | <ski> | which has `new :: IO (IVar a)',`write :: IVar a -> a -> IO ()',`read :: IVar a -> Reader a',`blocking :: Reader a -> IO a' |
| 18:37:33 | → | erty joins (~user@user/aeroplane) |
| 18:37:50 | <EvanR> | and Reader is a non-standard wrapper around IO, weird |
| 18:38:19 | <EvanR> | a false friend, not the Reader you know |
| 18:38:26 | <ski> | yea, `instance Monad Reader', for aggregating multiple `read's |
| 18:39:02 | <haskellbridge> | 12<Celestial> What is the most memory and speed efficient way to build up a graph of 100.000+ integer values where new edges are created frequently? |
| 18:39:12 | → | Guest71 joins (~Guest71@076-107-045-062.dynamic.caiway.nl) |
| 18:39:25 | <mauke> | () |
| 18:39:43 | <haskellbridge> | 12<Celestial> I wanted to use algebraic-graphs originally but I feel like simply using a vector with pairings would be more efficient? |
| 18:39:43 | <ski> | hehe |
| 18:39:58 | × | manwithluck quits (~manwithlu@2406:da14:5ea:e400:7863:dbc1:6a84:3050) (Quit: ZNC - https://znc.in) |
| 18:40:06 | <EvanR> | () takes up infinite percent more space than Void |
| 18:40:37 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 18:40:46 | <ski> | > logBase 2 1 / logBase 2 0 |
| 18:40:47 | <lambdabot> | -0.0 |
| 18:41:05 | <haskellbridge> | 12<Celestial> IEEE754 |
| 18:41:18 | <ski> | > logBase 0 1 |
| 18:41:19 | <lambdabot> | -0.0 |
| 18:41:34 | <EvanR> | > (log 1 - log 0) / log 0 |
| 18:41:36 | <lambdabot> | NaN |
| 18:41:51 | → | ivelten joins (~ivelten@38.252.84.3) |
| 18:42:16 | × | Guest71 quits (~Guest71@076-107-045-062.dynamic.caiway.nl) (Client Quit) |
| 18:44:07 | <erty> | I like Haskell being explicit and gives you control over optimisation on a compiler level. Unlike, say nodejs, where the event loop handles execution of code. |
| 18:44:09 | <erty> | As we have compared previously, Javascript took ~0.66s to execute `sumPlus` function for an input size of 8373, whereas Haskell took only ~0.10s for an input size of 10089850 |
| 18:44:12 | <haskellbridge> | 12<Celestial> also how fucked is the wikipedia API lol, if an article exists, its page object will be of the form `{ns: <number>, exists: "", *: <name>}` and if not its `{ns: <number>, *: <name>}` |
| 18:44:15 | <haskellbridge> | 12<Celestial> why ... not a boolean |
| 18:44:33 | <monochrom> | It may not be appropriate to even talk about how much space Void takes. |
| 18:44:49 | <EvanR> | "" = false in some languages |
| 18:45:05 | <EvanR> | some very interesting languages |
| 18:45:41 | <haskellbridge> | 12<Celestial> but why in a public facing API? |
| 18:45:45 | <EvanR> | monochrom, absent referent like talking about how much space "The King of France" takes up ? |
| 18:45:50 | <haskellbridge> | 12<Celestial> how would I properly parse this with aeson btw? |
| 18:46:01 | <monochrom> | Yeah! |
| 18:46:03 | <haskellbridge> | 12<Celestial> I want to just filter those without an `exists` out, I guess? |
| 18:46:18 | <EvanR> | when parsing with aeson you can ask if a field exists |
| 18:46:48 | <haskellbridge> | 12<Celestial> awesome, thank you I'll look into that |
| 18:48:12 | × | erty quits (~user@user/aeroplane) (Remote host closed the connection) |
| 18:48:19 | → | manwithluck joins (manwithluc@gateway/vpn/protonvpn/manwithluck) |
| 18:48:20 | <haskellbridge> | 12<Celestial> My problem is that this is in a list so I have to parse the `exists` optionally. Can I slap a `Maybe` on it and aesons TH engine will do that for me? |
| 18:48:27 | <monochrom> | Whoever designed it did not see the irony in asking "does exists exist?" >:) |
| 18:48:46 | <ski> | monochrom : akin to asking about the degree of the zero polynomial ? |
| 18:48:49 | <EvanR> | fix exists |
| 18:49:27 | <monochrom> | The zero polynomial is still easier to resolve than Void. |
| 18:49:58 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 255 seconds) |
| 18:50:02 | <monochrom> | I would love to say that because Void contains infinite information, it takes up infinite space. But that's wrong for another reason. |
| 18:50:19 | × | coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot) |
| 18:50:23 | <monochrom> | At least empirically wrong. |
| 18:50:44 | <EvanR> | so white noise takes up infinite space? xD |
| 18:51:01 | <monochrom> | So a better position may be: it's a singularity, don't even talk about its space. |
| 18:51:11 | ski | . o O ( "Existence is a second-order property." -- Frege,Quine ) |
| 18:51:29 | <haskellbridge> | 12<Celestial> isn't it that rather than *containing* infinite information, an infinite amount of information can be derived from it in falsehood? |
| 18:51:49 | <haskellbridge> | 12<Celestial> so it contains no information which makes it the source of infinite amounts of it? |
| 18:51:56 | <monochrom> | White noise is actually non-controversial for this. You try to run a compression algorithm on white noise, you find it incompressible. |
| 18:52:36 | <mauke> | did you mean: incomprehensible |
| 18:53:00 | <monochrom> | Actually, same difference. >:) |
| 18:53:54 | <EvanR> | > sizeOf (undefined :: Void) |
| 18:53:56 | <lambdabot> | error: |
| 18:53:56 | <lambdabot> | • Variable not in scope: sizeOf :: Void -> t |
| 18:53:56 | <lambdabot> | • Perhaps you meant one of these: |
| 18:54:00 | <ski> | page 5 of "Objects of Categories as Complex Numbers" by Marcelo Fiore,Tom Leinster in 2002-12-30 at <https://arxiv.org/abs/math/0212377> (also see "This Week's Finds in Mathematical Physics (Week 202)" by John Baez in 2004-02-21 at <https://math.ucr.edu/home/baez/week202.html>) defines the rig of degrees (and also of codegrees). in which the zero polynomial has degree `-Infinity' (and codegree `Infinity') |
| 18:54:35 | <[exa]> | EvanR: with noise and stuff we should do `entropyOf` |
| 18:54:45 | → | vglfr joins (~vglfr@78.26.242.160) |
| 18:55:50 | <ski> | (oh, and "Seven trees in one" by Andreas Blass in 1995 at <https://dept.math.lsa.umich.edu/~ablass/cat.html> (a neat little paper) is also related to that paper. it gives a constructive, non-recursive, bijection between `T' and `T^7', where `T = 1 + T^2') |
| 18:56:35 | <EvanR> | it's like the banach tarski paradox but tangible |
| 18:56:48 | <ski> | > Foreign.Storable.sizeOf (undefined :: Void) |
| 18:56:49 | <lambdabot> | error: |
| 18:56:49 | <lambdabot> | • No instance for (Storable Void) arising from a use of ‘sizeOf’ |
| 18:56:49 | <lambdabot> | • In the expression: sizeOf (undefined :: Void) |
| 18:57:06 | <monochrom> | Ugh n+1 = 2^n is already the limit of my comprehension. :) |
| 18:57:28 | <ski> | well, `T = 1 + T^2' is just `data T = Nil | Branch T T' |
| 18:57:50 | <monochrom> | Yeah but T = T^7 is highly fantastic! |
| 18:58:00 | <ski> | indeed ! :D |
| 18:58:44 | <ski> | anyway, that Baez blag talks about a "golden object" `G', where `G^2 = G + 1' |
| 18:58:46 | <EvanR> | someone should start a mystery cult based on that result before someone else does or someone shows the trivialness of it |
| 19:00:00 | <ski> | (anyway, `T' is countably infinite, so `T = T^7' isn't surprising. the surprising part is the "non-recursive" bit) |
| 19:00:10 | <monochrom> | EvanR, you overestimate humanity. Even after proving trivialness, people can still start mystery cults. |
| 19:00:39 | <EvanR> | a type G where Bool -> G = Maybe G |
| 19:01:00 | <EvanR> | is it in acme hackage somewhere |
| 19:01:06 | <monochrom> | haha |
| 19:01:10 | <ski> | (unlike the `N -> Bool = Maybe N', from the other day) |
| 19:02:46 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:4c99:f3ba:7425:36f4) |
| 19:03:37 | <ski> | Celestial : "can be derived from it in falsehood" ? |
| 19:04:03 | ski | idly ponders Perlis noise |
| 19:04:08 | × | it_ quits (~quassel@v2202212189510211193.supersrv.de) (Server closed connection) |
| 19:04:17 | → | it_ joins (~quassel@v2202212189510211193.supersrv.de) |
| 19:05:10 | <monochrom> | I think it means this. Void doesn't have to store infinite information. Instead, when you make use of Void -> Foo, it is you who fill in "I want Foo" so Void does not have to even know "oh one day someone will ask me about Foo". |
| 19:05:22 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 19:05:39 | <ski> | .. should `Void' have a `Storable' instance ? |
| 19:05:41 | <monochrom> | IOW the information "Foo" comes from you. Void just has to be a yes-man. |
| 19:06:06 | <monochrom> | What is Perlis noise? |
| 19:06:23 | <ski> | word play on "Perlin noise", and "Alan Perlis" |
| 19:06:33 | <mauke> | JAPH |
| 19:06:35 | <ski> | @quote stark |
| 19:06:35 | <lambdabot> | AlanPerlis says: The string is a stark data structure and everywhere it is passed there is much duplication of process. It is a perfect vehicle for hiding information. |
| 19:06:36 | <monochrom> | But I don't know Perlin noise! |
| 19:06:59 | <monochrom> | oh hiding information heh |
| 19:07:08 | → | acidjnk joins (~acidjnk@p200300d6e72b9332a5871c169e311c1a.dip0.t-ipconnect.de) |
| 19:07:08 | <ski> | <https://en.wikipedia.org/wiki/Perlin_noise> -- smoothly varying spatial (or temporal) noise |
| 19:07:39 | <haskellbridge> | 12<Celestial> ski: sorry; english bad. I meant to say that from a Void "value" you can derive anything (ex falso quodlibet). Basically `absurd` from base |
| 19:07:43 | <ski> | (well, at least continuously) |
| 19:08:01 | <ski> | ah, i was thinking maybe you meant something like that, Celestial |
| 19:08:02 | <monochrom> | w00t an Oscar for math and CS. |
| 19:09:33 | ski | . o O ( "Perlisisms - Epigrams in Programming" due to Alan Perlis at <https://www.cs.yale.edu/homes/perlis-alan/quotes.html> ) |
| 19:09:36 | <EvanR> | Void -> a says from a Void you can derive "an a (any type)" but not necessarily any value. For non Void a perhaps it selects a special answer like axiom of choice xD |
| 19:09:55 | <ski> | "3. Syntactic sugar causes cancer of the semicolon." is another well-known one |
| 19:10:26 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
| 19:10:56 | <ncf> | seven trees in one is cool here's a game about it https://lebarde.alwaysdata.net/seventrees/ |
| 19:11:05 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 19:11:05 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 19:11:05 | finn_elija | is now known as FinnElija |
| 19:11:09 | <monochrom> | Hrm, Perlis probably didn't realize that some of them are actually theorems. |
| 19:12:00 | <ski> | (i'm kinda reminded of your "Wise Tautologies" <https://www.vex.net/~trebla/humour/tautologies.html>) |
| 19:12:04 | × | euleritian quits (~euleritia@dynamic-002-247-250-221.2.247.pool.telefonica.de) (Read error: Connection reset by peer) |
| 19:12:23 | <monochrom> | #2 "Functions delay binding; data structures induce binding. Moral: Structure data late in the programming process." is actually one way to design a type and its API: You start with deciding on the API, then its free algebra is almost your data structure. Then maybe you quotient it and optimize it. |
| 19:12:25 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 19:12:47 | <monochrom> | For example, someone's pretty printer paper actually did that. |
| 19:13:17 | <ski> | was that a Functional Pearl ? |
| 19:13:25 | <monochrom> | #5 "5. If a program manipulates a large amount of data, it does so in a small number of ways." Suppose you replace "amount" by "variety". Then it is the parametricity theorem! |
| 19:13:30 | <monochrom> | I think yes. |
| 19:14:21 | <ski> | mauke ? |
| 19:17:10 | <ski> | monochrom : hm, interesting |
| 19:18:19 | × | misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 255 seconds) |
| 19:18:33 | <ski> | ah, also "8. A programming language is low level when its programs require attention to the irrelevant.","19. A language that doesn't affect the way you think about programming, is not worth knowing." |
| 19:18:37 | <monochrom> | But #9 "It is better to have 100 functions operate on one data structure than 10 functions on 10 data structures." is where Haskell+SML etc disagrees with Scheme+Clojure etc. |
| 19:18:49 | × | billchenchina- quits (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) (Remote host closed the connection) |
| 19:19:04 | → | billchenchina- joins (~billchenc@2408:824e:d2e:38f1:1059:3d3e:1395:9ed2) |
| 19:19:05 | <ski> | still, we use tuples (though mostly pairs) |
| 19:19:24 | <monochrom> | Hrm, maybe actually all of FP disagrees. |
| 19:20:38 | <monochrom> | Conceptually, even though you use lists all the time in Scheme Clojure etc, you don't view them "the same list type". You have 10 types in mind, it's just an implementation detail that all of them are backed by lists. |
| 19:20:40 | <ski> | there's also an argument to (analogously with tuples, say) have lightweight variant types, possibly positional rather than labelled |
| 19:20:54 | <ski> | `Either' kinda does that, except for when you have more than two alternatives |
| 19:21:34 | <ski> | the use case is when you almost always do `case' on the alternatives computed by the call, and then not refer to the compound variant types more |
| 19:22:37 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 276 seconds) |
| 19:22:37 | <ski> | ("lightweight" meaning that you don't have to declare the types, just like you don't have to declare tuple types. and with the record types of Trex in Hugs, these also were lightweight) |
| 19:23:08 | → | euleritian joins (~euleritia@dynamic-002-247-250-221.2.247.pool.telefonica.de) |
| 19:23:33 | × | euleritian quits (~euleritia@dynamic-002-247-250-221.2.247.pool.telefonica.de) (Read error: Connection reset by peer) |
| 19:23:50 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 19:23:51 | <ski> | (OCaml has "polymorphic variants" <https://v2.ocaml.org/manual/polyvariant.html> (in addition to the usual heavyweight, non-row-based, variant types), which are lightweight, using row types) |
| 19:24:00 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving) |
| 19:25:39 | <ski> | (you could imagine `(Error | Result)' has values of shape `(err |)' and `(| res)', continuing the pattern of tuple types and tuples) |
| 19:32:14 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:4c99:f3ba:7425:36f4) (Remote host closed the connection) |
| 19:35:35 | <EvanR> | (x||), (|y|), (||z) has type... uh |
| 19:35:47 | <EvanR> | <a|b|c> |
| 19:36:30 | <EvanR> | or (a|b|c) if you reuse the value syntax |
| 19:36:37 | <EvanR> | cool beans |
| 19:38:22 | <ski> | yep |
| 19:38:47 | <ski> | (i guess you'd need to write `(x| |)', though, otherwise it's a section) |
| 19:39:02 | <ski> | (or `(x | | )', if you prefer) |
| 19:39:11 | <EvanR> | I was wondering how to get something like that for a small language with types designed for advent of code |
| 19:39:22 | <EvanR> | now it is clear |
| 19:40:00 | <ski> | (in case it's unclear, this variant is not based on row-types, is just similar to tuples, except for, you know, sum type instead of product type) |
| 19:40:56 | <EvanR> | idris (used to?) implement tuples over size 2 as nested pairs, (a,b,c) sugar for (a,(b,c)), you could do the same thing here... |
| 19:41:00 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 19:41:23 | <EvanR> | but maybe it's simpler to just have them be any size |
| 19:41:49 | <ski> | probably |
| 19:41:53 | <ski> | .. one could even imagine, instead of writing `case ... of (x | |) -> ..x..; (| y |) -> ..y..; (| | z) -> ..z..', you could write `case ... of (x | y | z) -> ..x.. | ..y.. | ..z..' |
| 19:43:39 | <EvanR> | tuples/variants of size 1 through 7 supported only xD |
| 19:44:24 | × | sagax quits (~sagax_nb@user/sagax) (Ping timeout: 246 seconds) |
| 19:44:35 | <EvanR> | since 7 trees is all you can get before you wrap back to 1 |
| 19:45:46 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 255 seconds) |
| 19:50:48 | × | nckx quits (~nckx@libera/staff/owl/nckx) (Server closed connection) |
| 19:51:10 | → | nckx joins (~nckx@libera/staff/owl/nckx) |
| 19:54:21 | <EvanR> | the haskell report describes the parsing of layout by first translating to a form containing { ; }. Does this actually happen or is layout parsed directly somehow |
| 19:54:43 | <EvanR> | and which is easier xD |
| 20:01:20 | → | notzmv joins (~zmv@user/notzmv) |
| 20:01:53 | <monochrom> | There was a recent thread on haskell-cafe about it. https://mail.haskell.org/pipermail/haskell-cafe/2023-November/136423.html |
| 20:03:00 | × | forell quits (~forell@user/forell) (Server closed connection) |
| 20:03:17 | → | forell joins (~forell@user/forell) |
| 20:03:59 | → | waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 20:10:15 | <EvanR> | lovely |
| 20:11:20 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:4c99:f3ba:7425:36f4) |
| 20:18:42 | × | eL_Bart0 quits (eL_Bart0@dietunichtguten.org) (Server closed connection) |
| 20:18:43 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds) |
| 20:18:53 | → | eL_Bart0 joins (eL_Bart0@dietunichtguten.org) |
| 20:19:25 | → | euleritian joins (~euleritia@dynamic-002-247-250-221.2.247.pool.telefonica.de) |
| 20:19:43 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 20:21:28 | → | billchenchina joins (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) |
| 20:22:25 | × | dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 276 seconds) |
| 20:23:43 | × | billchenchina- quits (~billchenc@2408:824e:d2e:38f1:1059:3d3e:1395:9ed2) (Ping timeout: 276 seconds) |
| 20:24:54 | × | sajith quits (~sajith@user/sajith) (Server closed connection) |
| 20:25:01 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 276 seconds) |
| 20:25:13 | → | sajith joins (~sajith@user/sajith) |
| 20:32:07 | × | johnw quits (~johnw@69.62.242.138) (Quit: ZNC - http://znc.in) |
| 20:48:10 | × | shapr quits (~user@2600:1700:c640:3100:5b4c:3811:4e1e:b4e5) (Remote host closed the connection) |
| 20:48:23 | → | shapr joins (~user@2600:1700:c640:3100:3499:6a6b:ae1a:22d5) |
| 20:48:41 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 20:49:39 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 20:50:27 | × | dsrt^ quits (~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Ping timeout: 256 seconds) |
| 20:50:40 | → | dsrt^ joins (~cd@c-98-242-74-66.hsd1.ga.comcast.net) |
| 20:51:01 | × | sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 276 seconds) |
| 20:51:01 | → | johnw joins (~johnw@69.62.242.138) |
| 20:54:21 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 268 seconds) |
| 20:57:18 | × | minigrim0 quits (~minigrim0@2a01:4f9:6b:3416:68ba:8dff:fe58:a5ea) (Ping timeout: 256 seconds) |
| 20:59:36 | → | minigrim0 joins (~minigrim0@mordor.urlab.be) |
| 21:01:52 | × | trev quits (~trev@user/trev) (Quit: trev) |
| 21:02:29 | → | trev joins (~trev@user/trev) |
| 21:09:00 | → | misterfish joins (~misterfis@84-53-85-146.bbserv.nl) |
| 21:09:01 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 255 seconds) |
| 21:11:57 | × | trev quits (~trev@user/trev) (Quit: trev) |
| 21:13:52 | × | billchenchina quits (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) (Remote host closed the connection) |
| 21:16:02 | × | _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection) |
| 21:21:25 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 21:24:55 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 21:26:14 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 21:28:34 | × | euleritian quits (~euleritia@dynamic-002-247-250-221.2.247.pool.telefonica.de) (Read error: Connection reset by peer) |
| 21:28:51 | → | euleritian joins (~euleritia@77.22.252.56) |
| 21:31:09 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 246 seconds) |
| 21:33:04 | × | defanor quits (~defanor@tart.uberspace.net) (Server closed connection) |
| 21:33:21 | → | defanor joins (~defanor@tart.uberspace.net) |
| 21:38:11 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 21:38:37 | × | Inst quits (~Inst@120.244.192.250) (Ping timeout: 256 seconds) |
| 21:39:24 | → | arahael joins (~arahael@1.145.12.195) |
| 21:44:06 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 21:45:24 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 21:45:57 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 21:49:00 | × | ystael quits (~ystael@user/ystael) (Ping timeout: 246 seconds) |
| 21:53:21 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 256 seconds) |
| 22:01:53 | × | cross quits (~cross@spitfire.i.gajendra.net) (Quit: leaving) |
| 22:02:35 | → | cross joins (~cross@spitfire.i.gajendra.net) |
| 22:06:34 | <dmj`> | EvanR: making a new haskell? |
| 22:08:17 | × | idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.1.1) |
| 22:08:39 | × | dhil quits (~dhil@2001:8e0:2014:3100:a0:aa7c:41ab:e261) (Ping timeout: 256 seconds) |
| 22:15:19 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 22:16:42 | × | gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer) |
| 22:18:21 | → | kimiamania467 joins (~65804703@user/kimiamania) |
| 22:19:25 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:4c99:f3ba:7425:36f4) (Ping timeout: 276 seconds) |
| 22:20:22 | × | kimiamania46 quits (~65804703@user/kimiamania) (Ping timeout: 260 seconds) |
| 22:20:22 | kimiamania467 | is now known as kimiamania46 |
| 22:20:30 | <EvanR> | NeoNeoHaskell |
| 22:20:41 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 268 seconds) |
| 22:22:12 | → | gentauro joins (~gentauro@user/gentauro) |
| 22:22:22 | × | shapr quits (~user@2600:1700:c640:3100:3499:6a6b:ae1a:22d5) (Remote host closed the connection) |
| 22:26:42 | <dmj`> | ghc-new |
| 22:31:46 | × | arahael quits (~arahael@1.145.12.195) (Ping timeout: 276 seconds) |
| 22:33:04 | × | Xe quits (~cadey@perl/impostor/xe) (Ping timeout: 276 seconds) |
| 22:37:24 | × | blackfield quits (~aenima@85.255.4.218) (Server closed connection) |
| 22:38:11 | → | blackfield joins (~aenima@85.255.4.218) |
| 22:39:21 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 22:40:54 | × | gooba quits (~gooba@90-231-13-185-no3430.tbcn.telia.com) (Remote host closed the connection) |
| 22:41:15 | → | gooba joins (~gooba@90-231-13-185-no3430.tbcn.telia.com) |
| 22:44:25 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 255 seconds) |
| 22:45:19 | × | misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 255 seconds) |
| 22:46:51 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 22:57:44 | × | michalz quits (~michalz@185.246.207.221) (Remote host closed the connection) |
| 23:03:52 | → | vilya_ joins (~vilya@user/vilya) |
| 23:04:55 | × | acidjnk quits (~acidjnk@p200300d6e72b9332a5871c169e311c1a.dip0.t-ipconnect.de) (Ping timeout: 276 seconds) |
| 23:05:41 | × | vilya quits (~vilya@user/vilya) (Ping timeout: 260 seconds) |
| 23:15:14 | × | tabemann quits (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Server closed connection) |
| 23:15:46 | → | tabemann joins (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) |
| 23:16:17 | × | driib5 quits (~driib@vmi931078.contaboserver.net) (Quit: The Lounge - https://thelounge.chat) |
| 23:17:40 | → | driib5 joins (~driib@vmi931078.contaboserver.net) |
| 23:18:03 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 23:18:22 | → | arahael joins (~arahael@119-18-2-212.771202.syd.nbn.aussiebb.net) |
| 23:19:33 | → | notzmv joins (~zmv@user/notzmv) |
| 23:23:00 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (*.net *.split) |
| 23:23:00 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (*.net *.split) |
| 23:23:00 | × | califax quits (~califax@user/califx) (*.net *.split) |
| 23:23:00 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (*.net *.split) |
| 23:23:00 | × | chiselfuse quits (~chiselfus@user/chiselfuse) (*.net *.split) |
| 23:23:00 | × | adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (*.net *.split) |
| 23:23:00 | × | ec quits (~ec@gateway/tor-sasl/ec) (*.net *.split) |
| 23:23:00 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (*.net *.split) |
| 23:23:07 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 276 seconds) |
| 23:23:40 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 23:23:42 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 23:23:43 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 23:23:43 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 23:23:49 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 23:23:54 | → | califax joins (~califax@user/califx) |
| 23:23:55 | → | adanwan joins (~adanwan@gateway/tor-sasl/adanwan) |
| 23:31:53 | × | hgolden quits (~hgolden@2603-8000-9d00-3ed1-dd4f-298a-9c49-a0ed.res6.spectrum.com) (Remote host closed the connection) |
| 23:33:48 | → | hgolden joins (~hgolden@2603-8000-9d00-3ed1-dd4f-298a-9c49-a0ed.res6.spectrum.com) |
| 23:35:01 | → | chiselfuse joins (~chiselfus@user/chiselfuse) |
| 23:44:17 | × | Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:49:07 | × | sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 276 seconds) |
| 23:51:43 | × | Jackneill quits (~Jackneill@20014C4E1E1AA20011D4085FBCF3F922.dsl.pool.telekom.hu) (Ping timeout: 276 seconds) |
| 23:54:07 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds) |
All times are in UTC on 2023-11-17.