Logs on 2024-04-07 (liberachat/#haskell)
| 00:00:02 | → | mhatta joins (~mhatta@www21123ui.sakura.ne.jp) |
| 00:08:16 | × | peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 268 seconds) |
| 00:48:28 | → | peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com) |
| 00:58:31 | → | tri joins (~tri@ool-18bc2e74.dyn.optonline.net) |
| 00:59:16 | × | waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 260 seconds) |
| 01:02:41 | × | tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 252 seconds) |
| 01:03:43 | × | Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 260 seconds) |
| 01:09:21 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 01:12:20 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit) |
| 01:16:45 | → | saftl`` joins (~user@p200300f91740f5006069ab261fee2afc.dip0.t-ipconnect.de) |
| 01:18:11 | → | Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius) |
| 01:18:18 | × | saftl quits (~user@p200300f9173af1001d6b7e3ec038aab9.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
| 01:21:45 | × | saftl`` quits (~user@p200300f91740f5006069ab261fee2afc.dip0.t-ipconnect.de) (Quit: ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.1)) |
| 01:25:08 | × | Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
| 01:35:29 | → | sadie_ joins (~sadie@c-76-155-235-153.hsd1.co.comcast.net) |
| 01:40:48 | × | Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 255 seconds) |
| 01:51:05 | → | poscat0x04 joins (~poscat@user/poscat) |
| 01:52:11 | × | poscat quits (~poscat@user/poscat) (Ping timeout: 252 seconds) |
| 01:55:25 | → | Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius) |
| 01:56:59 | × | otto_s quits (~user@p4ff27a75.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
| 01:58:08 | → | otto_s joins (~user@p4ff27276.dip0.t-ipconnect.de) |
| 02:05:03 | × | op_4 quits (~tslil@user/op-4/x-9116473) (Remote host closed the connection) |
| 02:05:32 | → | op_4 joins (~tslil@user/op-4/x-9116473) |
| 02:11:38 | → | tri joins (~tri@ool-18bc2e74.dyn.optonline.net) |
| 02:16:13 | × | tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 268 seconds) |
| 02:16:58 | → | tri joins (~tri@ool-18bc2e74.dyn.optonline.net) |
| 02:27:25 | × | masterbuilder quits (~quassel@user/masterbuilder) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 02:29:10 | × | zetef quits (~quassel@5.2.182.99) (Ping timeout: 268 seconds) |
| 02:30:41 | × | peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 272 seconds) |
| 02:32:17 | → | tri_ joins (~tri@ool-18bc2e74.dyn.optonline.net) |
| 02:32:17 | × | tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Read error: Connection reset by peer) |
| 02:33:14 | × | mei quits (~mei@user/mei) (Remote host closed the connection) |
| 02:35:40 | → | mei joins (~mei@user/mei) |
| 02:42:43 | × | terrorjack quits (~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat) |
| 02:46:07 | → | terrorjack joins (~terrorjac@2a01:4f8:c17:87f8::) |
| 02:55:00 | → | igemnace joins (~ian@user/igemnace) |
| 02:56:01 | × | td_ quits (~td@i53870929.versanet.de) (Ping timeout: 272 seconds) |
| 02:56:35 | → | xdminsy joins (~xdminsy@117.147.70.203) |
| 02:57:11 | → | td_ joins (~td@i53870921.versanet.de) |
| 03:06:56 | × | tri_ quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection) |
| 03:07:28 | → | tri joins (~tri@ool-18bc2e74.dyn.optonline.net) |
| 03:22:22 | × | igemnace quits (~ian@user/igemnace) (Quit: WeeChat 4.2.1) |
| 03:22:25 | × | tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection) |
| 03:22:37 | → | tri joins (~tri@ool-18bc2e74.dyn.optonline.net) |
| 03:24:23 | → | aforemny joins (~aforemny@2001:9e8:6cf1:9700:d84c:da2d:5fb6:63cf) |
| 03:25:48 | × | aforemny_ quits (~aforemny@2001:9e8:6ccc:cd00:83d5:fd83:d24c:2c05) (Ping timeout: 260 seconds) |
| 03:47:08 | → | lisbeths joins (uid135845@id-135845.lymington.irccloud.com) |
| 04:09:55 | → | travgm joins (~travgm@fsf/member/travgm) |
| 04:25:17 | × | byte quits (~byte@149.28.222.189) (Ping timeout: 240 seconds) |
| 04:25:36 | → | byte joins (~byte@149.28.222.189) |
| 04:25:41 | × | snek quits (sid280155@id-280155.lymington.irccloud.com) (Ping timeout: 240 seconds) |
| 04:25:41 | × | tritlo_ quits (sid58727@id-58727.hampstead.irccloud.com) (Ping timeout: 240 seconds) |
| 04:25:41 | × | diagprov quits (sid348783@user/diagprov) (Ping timeout: 240 seconds) |
| 04:25:52 | → | tritlo_ joins (sid58727@id-58727.hampstead.irccloud.com) |
| 04:26:05 | × | scav quits (sid309693@user/scav) (Ping timeout: 240 seconds) |
| 04:26:05 | × | integral quits (sid296274@user/integral) (Ping timeout: 240 seconds) |
| 04:26:43 | → | scav joins (sid309693@user/scav) |
| 04:27:33 | → | integral joins (sid296274@user/integral) |
| 04:28:19 | → | snek joins (sid280155@id-280155.lymington.irccloud.com) |
| 04:28:22 | → | diagprov joins (sid348783@user/diagprov) |
| 04:30:29 | × | mei quits (~mei@user/mei) (Remote host closed the connection) |
| 04:32:55 | → | mei joins (~mei@user/mei) |
| 04:52:06 | × | n8n quits (~n8n@user/n8n) (Quit: WeeChat 4.2.1) |
| 05:09:30 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 268 seconds) |
| 05:11:09 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 05:30:14 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 05:43:34 | → | qqq joins (~qqq@92.43.167.61) |
| 05:59:01 | → | _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
| 05:59:24 | → | ec__ joins (~ec@gateway/tor-sasl/ec) |
| 06:00:05 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 240 seconds) |
| 06:01:06 | × | ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 260 seconds) |
| 06:01:29 | × | gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer) |
| 06:02:27 | × | tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection) |
| 06:07:26 | → | gentauro joins (~gentauro@user/gentauro) |
| 06:27:24 | → | euphores joins (~SASL_euph@user/euphores) |
| 06:34:35 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 06:35:12 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 06:39:59 | → | ubert1 joins (~Thunderbi@p200300ecdf39571b9c90c5889e4dd262.dip0.t-ipconnect.de) |
| 06:40:52 | × | ubert quits (~Thunderbi@p200300ecdf395731c4a2a707ba473843.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 06:40:52 | ubert1 | is now known as ubert |
| 06:46:40 | × | lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 06:47:06 | × | tzh quits (~tzh@c-73-164-206-160.hsd1.or.comcast.net) (Quit: zzz) |
| 06:54:16 | × | bliminse quits (~bliminse@user/bliminse) (Quit: leaving) |
| 06:54:27 | → | vnogueira_ joins (~vnogueira@user/vnogueira) |
| 06:55:42 | × | ec__ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 260 seconds) |
| 06:57:14 | → | bliminse joins (~bliminse@user/bliminse) |
| 06:57:34 | × | vnogueira quits (~vnogueira@user/vnogueira) (Ping timeout: 260 seconds) |
| 07:00:07 | × | tt12310 quits (~tt1231@2603-6010-8700-4a81-219f-50d3-618a-a6ee.res6.spectrum.com) (Quit: The Lounge - https://thelounge.chat) |
| 07:00:21 | × | jle` quits (~jle`@2603-8001-3b02-84d4-fc90-a9ba-a756-93bd.res6.spectrum.com) (Quit: WeeChat 4.2.1) |
| 07:02:39 | → | tt12310 joins (~tt1231@2603-6010-8700-4a81-219f-50d3-618a-a6ee.res6.spectrum.com) |
| 07:10:56 | × | nek0 quits (~nek0@user/nek0) (Quit: The Lounge - https://thelounge.chat) |
| 07:13:12 | → | michalz joins (~michalz@185.246.207.222) |
| 07:13:40 | → | yeitrafferin joins (~user@2a04:4540:7210:ce00:a5f0:fa46:a764:974e) |
| 07:22:25 | → | Square2 joins (~Square@user/square) |
| 07:25:32 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 07:35:22 | → | acidjnk_new joins (~acidjnk@p5dd87bdf.dip0.t-ipconnect.de) |
| 07:38:31 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds) |
| 07:39:48 | → | euleritian joins (~euleritia@dynamic-176-006-184-177.176.6.pool.telefonica.de) |
| 07:41:43 | × | philopsos quits (~caecilius@user/philopsos) (Ping timeout: 255 seconds) |
| 07:44:05 | → | jle` joins (~jle`@2603-8001-3b02-84d4-6afd-70f5-ecb9-5dde.res6.spectrum.com) |
| 07:47:10 | → | fireking04 joins (~fireking0@112.206.74.47) |
| 07:48:46 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 07:51:52 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 07:53:39 | → | nek0 joins (~nek0@2a01:4f8:222:2b41::12) |
| 07:53:39 | × | nek0 quits (~nek0@2a01:4f8:222:2b41::12) (Changing host) |
| 07:53:39 | → | nek0 joins (~nek0@user/nek0) |
| 08:06:11 | × | jorj quits (~jorj@user/jorj) (Quit: jorj) |
| 08:17:01 | → | simendsjo joins (~user@84.209.170.3) |
| 08:18:36 | → | zetef joins (~quassel@5.2.182.99) |
| 08:29:49 | × | sadie_ quits (~sadie@c-76-155-235-153.hsd1.co.comcast.net) (Remote host closed the connection) |
| 08:32:07 | × | arthurvl quits (~arthurvl@2a02-a469-f5e2-1-83d2-ca43-57a2-dc81.fixed6.kpn.net) (Quit: ein reboot macht gut) |
| 08:34:15 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 08:42:15 | × | Cale quits (~cale@2607:fea8:995f:f126:15c3:35a5:81ac:187c) (Ping timeout: 256 seconds) |
| 08:43:48 | × | euleritian quits (~euleritia@dynamic-176-006-184-177.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 08:44:07 | → | euleritian joins (~euleritia@77.22.252.56) |
| 08:51:03 | → | tititest joins (~tititest@ip-037-201-154-121.um10.pools.vodafone-ip.de) |
| 08:51:44 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 08:53:23 | → | oo_miguel joins (~Thunderbi@78-11-181-16.static.ip.netia.com.pl) |
| 08:54:04 | → | Cale joins (~cale@2607:fea8:995f:f126:15c3:35a5:81ac:187c) |
| 08:54:33 | × | fireking04 quits (~fireking0@112.206.74.47) (Quit: Leaving) |
| 08:56:06 | × | euleritian quits (~euleritia@77.22.252.56) (Read error: Connection reset by peer) |
| 08:57:17 | <mesaoptimizer> | What is the next book you'd recommend after Graham Hutton's textbook? |
| 08:59:58 | <mesaoptimizer> | I don't have a concrete goal right now -- I'm mostly exploring Haskell and its concepts and find it fun. I also find myself not really using Haskell to write any useful programs, although I do intend to experiment with using a static-site-generator like hakyll soon |
| 09:00:55 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 09:02:02 | <tomsmeding> | use it :p |
| 09:02:34 | <tomsmeding> | a good way to better understand the ideas is to use them yourself to build programs |
| 09:02:48 | <tomsmeding> | the programs don't need to be useful per se ;) |
| 09:02:59 | × | Square2 quits (~Square@user/square) (Ping timeout: 264 seconds) |
| 09:03:41 | × | simendsjo quits (~user@84.209.170.3) (Ping timeout: 240 seconds) |
| 09:05:11 | <tomsmeding> | depending on what you're interested in, ideas could be: a small calculator (which you can extend to a small programming language -- this one allows sticking in a whole bunch of fancy haskell if you want to), Project Euler like things, Advent of Code like things (can get a bit messy, because the problems sometimes are) |
| 09:05:39 | int-e | is looking up guides on leaving a cult (sorry, maybe a bit too dark for Sunday) |
| 09:06:07 | <int-e> | But there are books on this. :-P |
| 09:06:54 | <tomsmeding> | mesaoptimizer: unless you think you like wrangling with effective separation of IO and non-IO code, I don't recommend IO-heavy programs like web scrapers, games, TODO apps, etc. (the standard list of "small things to build" for imperative languages) |
| 09:07:36 | <tomsmeding> | there are certainly books on this but I posit that you should do _something_ with what you read if you want to truly understand what you've just read :) |
| 09:09:17 | <mesaoptimizer> | tomsmeding: that's useful. I guess I might take a look at hasktorch and mess around with it. For context, jax (the python deep learning library) is what got me enthusiastic about Haskell. |
| 09:09:53 | → | gmg joins (~user@user/gehmehgeh) |
| 09:10:31 | <tomsmeding> | that's a big library :) |
| 09:12:19 | <tomsmeding> | ah there is a tutorial |
| 09:12:24 | → | CiaoSen joins (~Jura@2a05:5800:298:af00:e6b9:7aff:fe80:3d03) |
| 09:16:59 | × | CiaoSen quits (~Jura@2a05:5800:298:af00:e6b9:7aff:fe80:3d03) (Ping timeout: 260 seconds) |
| 09:24:02 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 09:32:31 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 09:33:27 | → | arthurvl joins (~arthurvl@2a02-a469-f5e2-1-83d2-ca43-57a2-dc81.fixed6.kpn.net) |
| 09:33:44 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 09:35:51 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 09:37:16 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds) |
| 09:38:06 | → | euleritian joins (~euleritia@dynamic-176-006-184-177.176.6.pool.telefonica.de) |
| 09:39:41 | → | Luj joins (~Luj@2a01:e0a:5f9:9681:e6d6:c9c5:5502:ad12) |
| 09:40:56 | × | euleritian quits (~euleritia@dynamic-176-006-184-177.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 09:41:13 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 09:48:55 | → | Square2 joins (~Square@user/square) |
| 09:57:18 | × | coldtom quits (~coldtom@coldrick.cc) (Quit: Ping timeout (120 seconds)) |
| 09:57:33 | → | coldtom joins (~coldtom@coldrick.cc) |
| 09:58:29 | × | Square2 quits (~Square@user/square) (Ping timeout: 240 seconds) |
| 09:59:36 | × | econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
| 10:11:42 | × | yeitrafferin quits (~user@2a04:4540:7210:ce00:a5f0:fa46:a764:974e) (Quit: Leaving) |
| 10:11:49 | → | noumenon joins (~noumenon@113.51-175-156.customer.lyse.net) |
| 10:15:19 | → | sanpo joins (~sanpo@user/sanpo) |
| 10:17:27 | <Inst> | ugh, given a random generator |
| 10:18:29 | <Inst> | how do you, in pointfree or semi point free style, convert it to a list of items generated from the generator? |
| 10:22:25 | <ncf> | what's a random generator |
| 10:22:58 | <Rembane> | Inst: Do you have an example with the points? |
| 10:24:22 | <Inst> | import Control.Arrow ((***), first, second) |
| 10:24:22 | <Inst> | |
| 10:24:22 | <Inst> | genRange :: IO [Int] |
| 10:24:22 | <Inst> | genRange = do |
| 10:24:22 | <Inst> | initial <- first pure . uniformR (1,20) <$> newStdGen |
| 10:24:24 | <Inst> | |
| 10:24:26 | <Inst> | pure . take 30 . fst $ iterate (uniformR (1,20) =<< )) initial |
| 10:24:29 | <Inst> | ugh, should have pastebinned it, too large |
| 10:24:57 | <Inst> | i'd rather do it without arrows if possible |
| 10:27:58 | <Rembane> | You can use first and second from BiFunctor instead. |
| 10:31:53 | <Rembane> | Inst: I think basing your code in the example here should make it a bit more straightforward: https://hackage.haskell.org/package/random-1.2.1.2/docs/System-Random.html#g:2 |
| 10:32:27 | <zfnmxt> | I've always wondered why it's `Bifunctor` and not `BiFunctor`. I make that capitalization mistake every time I import it. |
| 10:32:34 | <ncf> | this is just replicateM 30 in a state monad |
| 10:32:47 | <Rembane> | zfnmxt: Then we're at least two. :) |
| 10:32:50 | <ncf> | zfnmxt: because it's bifunctor and not biFunctor? |
| 10:33:10 | <ncf> | do you write BiCycle |
| 10:33:49 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 10:34:19 | <zfnmxt> | ncf: You have a point there. And I might write "BiCycle" if the thing I usually have is a Cycle and a BiCycle is somehow a derivative of it where the Bi prefix makes sense. |
| 10:34:40 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds) |
| 10:35:26 | <zfnmxt> | For bifunctor I see the "bi" as a prefix modifier and so in my brain it makes sense to distinguish it from "functor" by capitalizing the "F". But your argument makes sense too. |
| 10:36:45 | Lord_of_Life_ | is now known as Lord_of_Life |
| 10:39:02 | <Inst> | oh doip :( |
| 10:39:07 | <Inst> | the unfoldr solution is best |
| 10:42:02 | <Inst> | grrr, ugh |
| 10:42:14 | <Inst> | i feel like it's cheating to just get out to unfoldr |
| 10:43:01 | <Rembane> | Inst: How does it feel like cheating? |
| 10:45:58 | <Inst> | i'm just copy pasting from the manual |
| 10:46:07 | <Inst> | genRange :: IO [Int] |
| 10:46:07 | <Inst> | genRange = do initial <- uniformR (1,20 :: Int) <$> newStdGen |
| 10:46:07 | <Inst> | pure . fmap fst . take 30 $ iterate ( uniformR (1,20 :: Int) . snd ) initial |
| 10:46:59 | × | xdminsy quits (~xdminsy@117.147.70.203) (Read error: Connection reset by peer) |
| 10:47:10 | <Inst> | there, this verrsion has no dependencies other than System.Random |
| 10:48:00 | → | Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) |
| 10:48:02 | <ncf> | why is that a goal |
| 10:49:43 | → | xdminsy joins (~xdminsy@117.147.70.203) |
| 10:50:02 | <Inst> | quick and dirty test-writing... which should be handled by Quickcheck, tbh |
| 10:52:06 | <Inst> | genRange = fmap fst . iterate ( uniformR (1,20 :: Int) . snd ). uniformR (1,20 :: Int) <$> newStdGen |
| 10:52:15 | <Inst> | this works, but i want to get the doubled uniformR out :( |
| 10:52:57 | <Inst> | which, incidentally, is the entire point of unfoldr :( |
| 10:56:11 | <ncf> | i would really just move to a stateful monad and use replicateM |
| 10:56:44 | <ncf> | see the second code snippet in that page |
| 10:57:24 | <ncf> | or you know, use randomRs |
| 10:57:29 | <ncf> | https://hackage.haskell.org/package/random-1.2.1.2/docs/System-Random.html#v:randomRs |
| 11:00:50 | × | mrmr155334 quits (~mrmr@user/mrmr) (Quit: Bye, See ya later!) |
| 11:10:29 | <Inst> | randomRs is depreciated |
| 11:11:52 | <ncf> | is it? |
| 11:14:58 | <tomsmeding> | > Random [ed. the class] exists primarily for backwards compatibility with version 1.1 of this library. |
| 11:16:10 | <tomsmeding> | a bit strange that they didn't provide a full set of replacement functions using Uniform (although the missing ones are easily written) |
| 11:16:19 | → | mrmr155334 joins (~mrmr@user/mrmr) |
| 11:19:08 | × | son0p quits (~ff@191.104.17.254) (Quit: Leaving) |
| 11:20:22 | × | xff0x quits (~xff0x@2405:6580:b080:900:2bd3:fa41:7b29:56d9) (Ping timeout: 246 seconds) |
| 11:20:29 | <Inst> | no one parallelized quickcheck yet? |
| 11:20:36 | <Inst> | I'm testing my mergesort and I think it's space leaking :( |
| 11:20:45 | <tomsmeding> | check out hedgehog |
| 11:21:16 | → | xff0x joins (~xff0x@2405:6580:b080:900:a090:2214:6013:5d1f) |
| 11:21:58 | <ski> | genRange = take 30 . unfoldr (Just . uniformR (1,20)) <$> newStdGen |
| 11:22:48 | → | billchenchina- joins (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) |
| 11:22:52 | <mesaoptimizer> | "I don’t feel the weight of the world. Because it does not weigh on me." https://www.greaterwrong.com/posts/ur9TCRnHJighHmLCW/on-caring#comment-ZsMLu8JqAiTrATCaL |
| 11:23:15 | → | yeitrafferin joins (~user@2a04:4540:7210:ce00:a5f0:fa46:a764:974e) |
| 11:23:28 | <mesaoptimizer> | oh jeez, wrong channel sorry guys |
| 11:23:36 | <Inst> | which is the right channel? :) |
| 11:24:04 | <Inst> | Oh, it's just a lesswrong mirror, not a splinter |
| 11:24:25 | <mesaoptimizer> | yeah, an alternative front-end |
| 11:27:21 | <Inst> | btw anyone have any idea why it spaceleaks? |
| 11:27:29 | <Inst> | of course this isn't as efficient as Data.List.sort |
| 11:27:31 | <Inst> | https://paste.tomsmeding.com/kCrIz5tQ |
| 11:27:41 | <ski> | Inst : `unfoldr' like above ? |
| 11:28:12 | <tomsmeding> | Inst: can you substantiate "space leak"? |
| 11:28:27 | <Inst> | well, i have no idea why it's so unperformant |
| 11:28:30 | <ski> | strictness annotations on base cases of `merge' are redundant |
| 11:28:50 | <Inst> | and they don't really work for list because you just get exposure (usually) of the constructor |
| 11:29:00 | <Inst> | thank you for recommending hedgehog |
| 11:29:07 | × | travgm quits (~travgm@fsf/member/travgm) (Remote host closed the connection) |
| 11:29:19 | <Inst> | i'm getting into testing more professionally, since I'm trying to pick up Julia and make friends with Julia, and you know what their language is notorious for |
| 11:29:20 | <tomsmeding> | Inst: why is 'merge' calling mergesort on its arguments at each step of the 'merge' recursion |
| 11:30:13 | <tomsmeding> | tip: use view patterns less :p |
| 11:30:47 | <Inst> | because i wanted comedy mutual recursion |
| 11:31:04 | <Inst> | i've been trolling them by pretending that their terse function notation foo(x,y) indicates pure |
| 11:31:19 | <Inst> | then i wrote out everything as a single expression using let |
| 11:31:39 | <Inst> | and screwed over their syntax to force a Haskell-like evaluation, which was, of course, utterly unreadable |
| 11:31:43 | <Inst> | they didn't bite :( |
| 11:31:46 | <Inst> | wanna see? |
| 11:32:49 | <tomsmeding> | Inst: https://paste.tomsmeding.com/DeYSb30M |
| 11:32:53 | <ski> | Inst : you're repeatedly sorting the tails in `merge', uselessly |
| 11:33:08 | <Inst> | ah, thanks |
| 11:33:22 | <tomsmeding> | (that's what I was trying to say as well, but less explicitly so that you could figure it out yourself :p) |
| 11:33:30 | <ski> | (sorting them when they're already sorted, apart from the initial recursive `mergesort' calls, from `merge') |
| 11:33:36 | <Inst> | ummm, i did that, with single recursion |
| 11:34:43 | <tomsmeding> | the more interesting question is, what was the complexity of the original algorithm |
| 11:34:54 | <Inst> | probably O(n^2)? |
| 11:34:58 | <tomsmeding> | far more I think |
| 11:36:09 | <Inst> | wait, are there any real ways to get O(k^n)? |
| 11:36:10 | × | xdminsy quits (~xdminsy@117.147.70.203) (Ping timeout: 255 seconds) |
| 11:36:59 | → | xdminsy joins (~xdminsy@117.147.70.203) |
| 11:37:23 | <Inst> | whoops, i mean O(n^n) |
| 11:37:29 | <tomsmeding> | think about that one yourself for a while :) |
| 11:39:14 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 268 seconds) |
| 11:42:39 | × | xff0x quits (~xff0x@2405:6580:b080:900:a090:2214:6013:5d1f) (Quit: xff0x) |
| 11:42:51 | → | euleritian joins (~euleritia@dynamic-176-006-184-177.176.6.pool.telefonica.de) |
| 11:43:40 | × | euleritian quits (~euleritia@dynamic-176-006-184-177.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 11:43:57 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 11:44:50 | <darkling> | A clue for that: you may be interested in Stirling's approximation. |
| 11:45:43 | → | xff0x joins (~xff0x@2405:6580:b080:900:bb82:210b:4257:7a0f) |
| 11:48:53 | × | xdminsy quits (~xdminsy@117.147.70.203) (Ping timeout: 240 seconds) |
| 11:48:57 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 11:49:16 | → | xdminsy joins (~xdminsy@117.147.70.203) |
| 11:50:47 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 12:05:47 | <Inst> | yeah, i looked it up, DFS is O(n^n) |
| 12:06:13 | <Inst> | btw, quick question, this wouldn't turn on multicore on ghci, right? |
| 12:06:15 | <Inst> | ghci -package hedgehog -threaded +RTS -N |
| 12:06:32 | <tomsmeding> | have you tried? |
| 12:06:58 | <tomsmeding> | I can't figure the math out for the complexity of Inst's original code, and I can't figure out a fit of the timing data either :p |
| 12:07:37 | <tomsmeding> | oh I can |
| 12:10:47 | <tomsmeding> | the fit is not perfect but I'll accept it as decent |
| 12:10:58 | <tomsmeding> | a * n^2 + b * exp(sqrt(n)) |
| 12:17:23 | <tomsmeding> | https://tomsmeding.com/vang/5TxoyR/inst-plot.png |
| 12:17:25 | <tomsmeding> | without the n^2 term |
| 12:18:40 | → | son0p joins (~ff@191.104.17.254) |
| 12:20:29 | × | ubert quits (~Thunderbi@p200300ecdf39571b9c90c5889e4dd262.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 12:22:28 | × | acidjnk_new quits (~acidjnk@p5dd87bdf.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 12:24:07 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 272 seconds) |
| 12:25:09 | → | euleritian joins (~euleritia@dynamic-176-006-184-177.176.6.pool.telefonica.de) |
| 12:40:33 | × | euleritian quits (~euleritia@dynamic-176-006-184-177.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 12:42:31 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 13:12:18 | → | dbaoty joins (~dbaoty@tptn-04-0838.dsl.iowatelecom.net) |
| 13:17:14 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 13:21:37 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds) |
| 13:21:58 | → | euleritian joins (~euleritia@dynamic-176-006-184-177.176.6.pool.telefonica.de) |
| 13:29:39 | → | todi joins (~todi@p57803331.dip0.t-ipconnect.de) |
| 13:39:08 | × | euleritian quits (~euleritia@dynamic-176-006-184-177.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 13:39:25 | → | euleritian joins (~euleritia@77.22.252.56) |
| 13:40:09 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 13:45:15 | × | eugenrh_ quits (~eugenrh@2a01:4f9:c011:265::1) (Changing host) |
| 13:45:15 | → | eugenrh_ joins (~eugenrh@user/eugenrh) |
| 13:45:30 | × | eugenrh_ quits (~eugenrh@user/eugenrh) (Quit: WeeChat 3.7.1) |
| 13:49:38 | → | waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 13:50:45 | → | eugenrh joins (~eugenrh@user/eugenrh) |
| 13:54:22 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 14:05:33 | × | zetef quits (~quassel@5.2.182.99) (Remote host closed the connection) |
| 14:17:07 | × | michalz quits (~michalz@185.246.207.222) (Ping timeout: 246 seconds) |
| 14:17:48 | → | ec_ joins (~ec@gateway/tor-sasl/ec) |
| 14:22:10 | → | __monty__ joins (~toonn@user/toonn) |
| 14:25:28 | <Inst> | thanks :) |
| 14:25:46 | <Inst> | i wonder if i should just memorize the Data.List.sort instead |
| 14:26:04 | <Inst> | since that is a canonically good mergesort, no? Btu I'd assume it's limited to laziness |
| 14:35:19 | <ski> | "limited to laziness" meaning ? |
| 14:38:30 | × | jrm quits (~jrm@user/jrm) (Quit: ciao) |
| 14:39:59 | → | jrm joins (~jrm@user/jrm) |
| 14:43:16 | → | target_i joins (~target_i@user/target-i/x-6023099) |
| 14:52:55 | → | r5c4571lh01987 joins (~rscastilh@179.221.142.8) |
| 14:54:54 | → | michalz joins (~michalz@185.246.207.221) |
| 15:01:01 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 15:14:20 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 15:16:18 | × | ddellacosta quits (~ddellacos@ool-44c73d29.dyn.optonline.net) (Ping timeout: 252 seconds) |
| 15:19:53 | × | noumenon quits (~noumenon@113.51-175-156.customer.lyse.net) (Quit: Leaving) |
| 15:21:14 | → | poxel joins (~lennart@user/poxel) |
| 15:24:06 | × | tititest quits (~tititest@ip-037-201-154-121.um10.pools.vodafone-ip.de) (Quit: Leaving.) |
| 15:28:27 | × | paddymahoney quits (~paddymaho@99.250.26.190) (Ping timeout: 260 seconds) |
| 15:30:35 | × | michalz quits (~michalz@185.246.207.221) (Ping timeout: 264 seconds) |
| 15:31:16 | → | ania123 joins (~ania123@94-43-231-47.dsl.utg.ge) |
| 15:32:05 | → | michalz joins (~michalz@185.246.207.201) |
| 15:33:08 | × | ania123 quits (~ania123@94-43-231-47.dsl.utg.ge) (Client Quit) |
| 15:36:24 | → | paddymahoney joins (~paddymaho@99.250.26.190) |
| 15:37:14 | → | acidjnk_new joins (~acidjnk@p200300d6e714dc26d1056ca2ae8c08a8.dip0.t-ipconnect.de) |
| 15:43:12 | × | euleritian quits (~euleritia@77.22.252.56) (Ping timeout: 255 seconds) |
| 15:44:34 | → | euleritian joins (~euleritia@dynamic-176-006-184-177.176.6.pool.telefonica.de) |
| 15:48:48 | × | Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Read error: Connection reset by peer) |
| 15:49:42 | → | Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius) |
| 15:50:27 | × | Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Max SendQ exceeded) |
| 15:51:17 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 15:51:27 | → | Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius) |
| 15:55:21 | × | euleritian quits (~euleritia@dynamic-176-006-184-177.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 15:55:45 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 15:58:48 | → | philopsos joins (~caecilius@user/philopsos) |
| 16:03:28 | → | machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net) |
| 16:04:17 | → | tzh joins (~tzh@c-73-164-206-160.hsd1.or.comcast.net) |
| 16:04:42 | × | todi quits (~todi@p57803331.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 16:09:08 | → | ania123 joins (~ania123@94-43-231-47.dsl.utg.ge) |
| 16:10:29 | × | machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 256 seconds) |
| 16:28:07 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 16:29:13 | × | son0p quits (~ff@191.104.17.254) (Quit: Leaving) |
| 16:33:35 | <Inst> | ski: that is to say, the good performance of Haskell mergesort assumes laziness |
| 16:36:10 | × | qqq quits (~qqq@92.43.167.61) (Remote host closed the connection) |
| 16:37:43 | → | zetef joins (~quassel@5.2.182.99) |
| 16:41:48 | → | rvalue- joins (~rvalue@user/rvalue) |
| 16:42:55 | × | rvalue quits (~rvalue@user/rvalue) (Ping timeout: 256 seconds) |
| 16:45:52 | rvalue- | is now known as rvalue |
| 16:49:52 | <tomsmeding> | I don't think it does |
| 16:50:23 | <tomsmeding> | it's written in such a way that it can produce elements before the whole list has been sorted using laziness |
| 16:50:31 | <tomsmeding> | but in a strict language the algorithm would work fine |
| 16:56:26 | → | son0p joins (~ff@191.104.17.254) |
| 16:57:57 | → | todi joins (~todi@p57803331.dip0.t-ipconnect.de) |
| 16:59:04 | × | ania123 quits (~ania123@94-43-231-47.dsl.utg.ge) (Quit: Client closed) |
| 16:59:34 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 260 seconds) |
| 16:59:59 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 17:02:22 | × | zetef quits (~quassel@5.2.182.99) (Remote host closed the connection) |
| 17:04:01 | → | hocrdoac^ joins (~cd@c-98-242-74-66.hsd1.ga.comcast.net) |
| 17:08:04 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:11:07 | × | esph quits (~weechat@user/esph) (Ping timeout: 260 seconds) |
| 17:22:46 | → | tititest joins (~tititest@ip-037-201-154-121.um10.pools.vodafone-ip.de) |
| 17:22:56 | → | Square2 joins (~Square@user/square) |
| 17:23:28 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 17:27:25 | → | qqq joins (~qqq@92.43.167.61) |
| 17:30:17 | × | Rembane quits (~Rembane@li346-36.members.linode.com) (Changing host) |
| 17:30:17 | → | Rembane joins (~Rembane@user/Rembane) |
| 17:30:25 | × | billchenchina- quits (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) (Quit: Leaving) |
| 17:32:21 | → | sadie-sorceress joins (~sadie-sor@c-76-155-235-153.hsd1.co.comcast.net) |
| 17:33:34 | <dolio> | Have you heard of Timsort? That is a bottom-up merge sort. |
| 17:33:43 | → | peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com) |
| 17:34:18 | <dolio> | Fancier than the one on on lists in GHC, but similar in strategy. |
| 17:34:30 | <dolio> | It was originally written for Python. |
| 17:35:53 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:37:37 | × | sanpo quits (~sanpo@user/sanpo) (Quit: Client closed) |
| 17:39:14 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 260 seconds) |
| 17:39:42 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 17:41:30 | × | sadie-sorceress quits (~sadie-sor@c-76-155-235-153.hsd1.co.comcast.net) (Quit: Client closed) |
| 17:41:58 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 17:42:36 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 17:43:06 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 17:47:59 | × | euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.) |
| 17:53:59 | → | esph joins (~weechat@user/esph) |
| 18:00:31 | × | r5c4571lh01987 quits (~rscastilh@179.221.142.8) (Remote host closed the connection) |
| 18:02:23 | × | peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 264 seconds) |
| 18:05:19 | → | euphores joins (~SASL_euph@user/euphores) |
| 18:08:45 | → | r5c4571lh01987 joins (~rscastilh@179.221.142.8) |
| 18:11:25 | × | yeitrafferin quits (~user@2a04:4540:7210:ce00:a5f0:fa46:a764:974e) (Quit: Leaving) |
| 18:11:26 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 18:17:44 | → | machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net) |
| 18:19:09 | × | xdminsy quits (~xdminsy@117.147.70.203) (Ping timeout: 268 seconds) |
| 18:20:31 | → | xdminsy joins (~xdminsy@117.147.70.203) |
| 18:21:21 | <c_wraith> | the only real performance issue from Data.List.sort is that it... works on lists. but doing so does allow it to be lazy - generating a prefix of length k is O(n * log k) |
| 18:22:18 | → | akegalj joins (~akegalj@141-136-147-171.dsl.iskon.hr) |
| 18:24:17 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:24:26 | <sm> | Inst: I hear you about typeclasses. If you haven't already, spending a bit of time with typeclassopedia is a good way to make friends with them |
| 18:24:34 | <int-e> | O(n + k log n) |
| 18:29:59 | <Inst> | I'm familiar with the standard typeclasses, slightly less familiar with Foldable / Traversable |
| 18:30:52 | × | dtman34 quits (~dtman34@c-75-72-163-222.hsd1.mn.comcast.net) (Ping timeout: 268 seconds) |
| 18:32:12 | × | xdminsy quits (~xdminsy@117.147.70.203) (Ping timeout: 256 seconds) |
| 18:33:07 | → | xdminsy joins (~xdminsy@117.147.70.203) |
| 18:33:32 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 18:35:58 | <Inst> | mildly curious: did anyone try to solve namespacing in Haskell via list / vector abuse? |
| 18:36:16 | → | peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com) |
| 18:38:23 | × | xdminsy quits (~xdminsy@117.147.70.203) (Ping timeout: 264 seconds) |
| 18:38:42 | → | xdminsy joins (~xdminsy@117.147.70.203) |
| 18:38:47 | <int-e> | please speak plainly |
| 18:39:22 | <Inst> | stuff lambdas into vectors |
| 18:40:08 | <Inst> | all of them have to be the same type, but it works fine for procedures which can all have a bind type of () |
| 18:40:23 | <Inst> | then the name of the vector is a namespace, of sorts |
| 18:41:10 | <Inst> | you can pass data between them by having them share a TVar |
| 18:42:49 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:43:58 | <Inst> | sorry, i'll probably stop annoying you folks for a while, I need to get my github working again |
| 18:47:15 | × | xdminsy quits (~xdminsy@117.147.70.203) (Ping timeout: 255 seconds) |
| 18:53:29 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 19:03:16 | × | hocrdoac^ quits (~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Remote host closed the connection) |
| 19:05:20 | <monochrom> | We already know stuffing lambdas into a record. Then they don't even have to be the same type. |
| 19:07:11 | <monochrom> | BTW this is when one line of sample code (so a formula) is worth a thousand pictures, despite what all you detractors said yesterday. |
| 19:07:54 | <monochrom> | "solve namespacing in Haskell via list / vector abuse" may look like only 8 words, but since no one understands it, it may as well be a million words. |
| 19:08:11 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 272 seconds) |
| 19:09:06 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 19:09:19 | <Inst> | foo@[name1, name2, name3] = [fun1, fun2, fun3] |
| 19:09:33 | <Inst> | module MyModule (foo) where... |
| 19:09:53 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 19:10:27 | <Inst> | could set up some newtypes with custom getters and setters |
| 19:11:06 | × | bionade24 quits (~quassel@2a03:4000:33:45b::1) (Quit: Apocalypse Incoming!) |
| 19:11:12 | <Inst> | typeclass overloaded accessor dot, instances, etc. But it's essentially objects if it's mutable. |
| 19:11:54 | → | bionade24 joins (~quassel@2a03:4000:33:45b::1) |
| 19:12:00 | <Inst> | I just realized that any language with first-class functions, a sufficiently flexible type system to allow heterogenous lists / arrays, and mutation is an OOP language |
| 19:12:07 | <Inst> | but I guess you folks knew that decades ago |
| 19:12:23 | <ski> | object-orientation does not require mutability |
| 19:12:24 | <Inst> | but take out the mutation, you still have namespacing |
| 19:12:39 | <Inst> | what's an example of an OOP language without mutation? |
| 19:12:57 | <ski> | Ocaml has OO support for immutable objects |
| 19:13:21 | <Inst> | but OO is about encapsulating and managing state |
| 19:13:27 | <c_wraith> | I don't see how that idea is functionally different from adding a prefix to a bunch of names. |
| 19:13:48 | <ski> | (you can easily compute a clone of the current object, with some (immutable) fields swapped out with other values, and return that from a method) |
| 19:13:52 | <c_wraith> | so it's just more typing and language features to avoid choosing unique names |
| 19:14:08 | <Inst> | ski: you mean with shadowing? |
| 19:14:12 | <ski> | no |
| 19:14:27 | <ski> | similar to `foo {x = ...}' in Haskell |
| 19:14:38 | <ski> | (but for objects) |
| 19:14:48 | <Inst> | essentially method chaining? |
| 19:14:59 | <ski> | "but OO is about encapsulating and managing state" -- "instance state" does not need to be mutable |
| 19:15:16 | <ski> | no, copy-with-update |
| 19:15:19 | <c_wraith> | Inst: look at the String class in just about any language. for performance and reasoning, they tend to be immutable. so you've already seen OO with immutable data. |
| 19:15:33 | <Inst> | you need to have a semi-permanent reference, though |
| 19:16:38 | <ski> | and i'd replace "heterogenous lists / arrays" with "records" |
| 19:16:58 | <Inst> | IIRC a big feature of OOP is extensible records, though |
| 19:17:15 | <Inst> | it's really painful to handle without arbitrarily-sized lists / dictionaries |
| 19:17:50 | <ski> | O'Haskell / Timber had extensible records |
| 19:17:51 | → | aforemny_ joins (~aforemny@i59F516C7.versanet.de) |
| 19:18:06 | × | aforemny quits (~aforemny@2001:9e8:6cf1:9700:d84c:da2d:5fb6:63cf) (Ping timeout: 256 seconds) |
| 19:18:06 | <ski> | (and subtyping in general) |
| 19:18:58 | <ski> | afaiac, mutability is orthogonal to OO |
| 19:22:21 | <Inst> | tbh, one question, what is the limit of FP, as in, what can't first-class functions do? About the only limitation I think of Haskell is the inability to parse the innards of function and variable definitions |
| 19:22:51 | <Inst> | oh yeah, the dependent types waiting game |
| 19:23:20 | <monochrom> | parse? unparse? |
| 19:23:56 | <Inst> | iirc template haskell has a missing feature to expand the AST of a function / variable definition |
| 19:24:07 | × | peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds) |
| 19:24:24 | <Inst> | i'm also wondering if it's possible, with functions only, to implement yet another type system below the Haskell type system |
| 19:24:38 | <monochrom> | below? above? |
| 19:25:27 | <Inst> | i mean that, your code wouldn't compile if it doesn't type-check within your custom type system that's not integrated into GHC, but implemented only with Haskell functions |
| 19:27:42 | <Inst> | might still be doable by converting every function and value into a tuple |
| 19:28:04 | ski | glances around nervously |
| 19:29:38 | <c_wraith> | I guess there's some theoretical sense in which every function is a list of tuples, but in general I'd recommend using functions for functions |
| 19:30:07 | → | siw5ohs0 joins (~aiw5ohs0@user/aiw5ohs0) |
| 19:30:54 | ← | siw5ohs0 parts (~aiw5ohs0@user/aiw5ohs0) () |
| 19:31:32 | <monochrom> | Every function f can be converted to a tuple (f, ()). This goes for values, too. >:) |
| 19:31:59 | <Inst> | i'm sort of surprised no one has tried to build, as a joke, a TypeT monad transformer |
| 19:39:21 | <ncf> | a what |
| 19:40:09 | <Inst> | a monad transformer that puts code underneath it into a secondary type system |
| 19:40:24 | <Inst> | iirc Haskell already has unergonomic simulated dependent types |
| 19:40:46 | <ski> | no |
| 19:43:59 | <dolio> | Not every function is a list of tuples. |
| 19:44:09 | <dolio> | Unless you're in classical fantasy land. |
| 19:44:44 | <dolio> | Even then you have to stretch the meaning of 'list' a lot. |
| 19:49:07 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 19:51:17 | → | __monty__ joins (~toonn@user/toonn) |
| 19:55:51 | <monochrom> | But that's what I did. I stretched "list" all the way to arbitrary functors to understand the Löb combinator, representable functors, and the Yoneda lemma. :) |
| 20:01:05 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 20:04:22 | × | tititest quits (~tititest@ip-037-201-154-121.um10.pools.vodafone-ip.de) (Quit: Leaving.) |
| 20:16:35 | × | r5c4571lh01987 quits (~rscastilh@179.221.142.8) (Remote host closed the connection) |
| 20:17:13 | × | _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection) |
| 20:19:54 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 20:41:59 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 20:42:17 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 20:47:52 | → | peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com) |
| 20:53:56 | → | dbaoty1 joins (~dbaoty@tptn-04-0838.dsl.iowatelecom.net) |
| 20:54:50 | → | werneta joins (~werneta@071-083-160-242.res.spectrum.com) |
| 20:55:47 | × | dbaoty quits (~dbaoty@tptn-04-0838.dsl.iowatelecom.net) (Ping timeout: 264 seconds) |
| 20:58:24 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 20:59:17 | → | dbaoty joins (~dbaoty@tptn-04-0838.dsl.iowatelecom.net) |
| 21:00:17 | → | __monty__ joins (~toonn@user/toonn) |
| 21:01:21 | × | dbaoty1 quits (~dbaoty@tptn-04-0838.dsl.iowatelecom.net) (Ping timeout: 255 seconds) |
| 21:14:23 | × | qqq quits (~qqq@92.43.167.61) (Ping timeout: 264 seconds) |
| 21:16:46 | → | sanpo joins (~sanpo@user/sanpo) |
| 21:20:42 | × | Square2 quits (~Square@user/square) (Ping timeout: 255 seconds) |
| 21:22:04 | → | qqq joins (~qqq@92.43.167.61) |
| 21:22:49 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 21:25:36 | × | __monty__ quits (~toonn@user/toonn) (Ping timeout: 256 seconds) |
| 21:26:49 | → | noumenon joins (~noumenon@113.51-175-156.customer.lyse.net) |
| 21:27:15 | → | __monty__ joins (~toonn@user/toonn) |
| 21:29:44 | × | noumenon quits (~noumenon@113.51-175-156.customer.lyse.net) (Client Quit) |
| 21:31:49 | × | michalz quits (~michalz@185.246.207.201) (Quit: ZNC 1.8.2 - https://znc.in) |
| 21:35:33 | × | peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 255 seconds) |
| 21:38:17 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 21:41:22 | × | dispater quits (~dispater@mail.brprice.uk) (Quit: ZNC 1.8.2 - https://znc.in) |
| 21:41:22 | × | orcus quits (~orcus@mail.brprice.uk) (Quit: ZNC 1.8.2 - https://znc.in) |
| 21:42:43 | × | Nixkernal quits (~Nixkernal@240.17.194.178.dynamic.wline.res.cust.swisscom.ch) (Ping timeout: 272 seconds) |
| 21:43:07 | → | dispater joins (~dispater@mail.brprice.uk) |
| 21:43:38 | → | orcus joins (~orcus@mail.brprice.uk) |
| 21:47:11 | × | Inst quits (~Inst@user/Inst) (Remote host closed the connection) |
| 21:54:06 | × | target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving) |
| 21:57:27 | → | dcoutts joins (~duncan@cpc69399-oxfd27-2-0-cust684.4-3.cable.virginm.net) |
| 21:58:07 | → | peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com) |
| 22:00:03 | → | Inst joins (~Inst@user/Inst) |
| 22:00:18 | × | Inst quits (~Inst@user/Inst) (Remote host closed the connection) |
| 22:07:57 | × | akegalj quits (~akegalj@141-136-147-171.dsl.iskon.hr) (Quit: leaving) |
| 22:09:51 | → | dcoutts_ joins (~duncan@cpc69400-oxfd27-2-0-cust750.4-3.cable.virginm.net) |
| 22:10:28 | × | dcoutts quits (~duncan@cpc69399-oxfd27-2-0-cust684.4-3.cable.virginm.net) (Ping timeout: 260 seconds) |
| 22:12:00 | → | dcoutts__ joins (~duncan@cpc69400-oxfd27-2-0-cust750.4-3.cable.virginm.net) |
| 22:14:31 | × | dcoutts_ quits (~duncan@cpc69400-oxfd27-2-0-cust750.4-3.cable.virginm.net) (Ping timeout: 246 seconds) |
| 22:18:42 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 22:18:59 | → | euleritian joins (~euleritia@77.22.252.56) |
| 22:19:07 | × | peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds) |
| 22:32:09 | → | shoggouth joins (uid607148@user/shoggouth) |
| 22:35:28 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 22:40:40 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 22:43:47 | × | poxel quits (~lennart@user/poxel) (Quit: WeeChat 4.2.1) |
| 22:48:59 | × | sudden quits (~cat@user/sudden) (Ping timeout: 260 seconds) |
| 22:49:14 | × | paddymahoney quits (~paddymaho@99.250.26.190) (Remote host closed the connection) |
| 23:05:16 | → | sudden joins (~cat@user/sudden) |
| 23:14:13 | × | acidjnk_new quits (~acidjnk@p200300d6e714dc26d1056ca2ae8c08a8.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
| 23:20:25 | → | peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com) |
| 23:23:34 | × | sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 255 seconds) |
| 23:35:39 | <c_wraith> | are there any pure-haskell syntax highlight projects other than skylighting? |
| 23:36:36 | × | dispater quits (~dispater@mail.brprice.uk) (Quit: ZNC 1.8.2 - https://znc.in) |
| 23:36:37 | × | orcus quits (~orcus@mail.brprice.uk) (Quit: ZNC 1.8.2 - https://znc.in) |
| 23:38:20 | → | dispater joins (~dispater@mail.brprice.uk) |
| 23:38:51 | → | orcus joins (~orcus@mail.brprice.uk) |
| 23:39:16 | <c_wraith> | I guess there's highlighter2. Which still builds, despite the date on it. |
| 23:40:06 | × | finsternis quits (~X@23.226.237.192) (Read error: Connection reset by peer) |
| 23:45:16 | → | ftweedal joins (~ftweedal@159.196.12.92) |
| 23:54:23 | × | mesaoptimizer quits (~mesaoptim@user/PapuaHardyNet) (Ping timeout: 252 seconds) |
| 23:59:34 | × | forell quits (~forell@user/forell) (Quit: ZNC - https://znc.in) |
All times are in UTC on 2024-04-07.