Logs: liberachat/#haskell
| 2025-11-21 11:08:24 | <c_wraith> | but it turns out to actually work in Haskell |
| 2025-11-21 11:09:19 | × | Vajb quits (~Vajb@n6jd7kwb4e2quheg6tf-1.v6.elisa-mobile.fi) (Ping timeout: 264 seconds) |
| 2025-11-21 11:09:32 | <c_wraith> | (you can use hyperfunctions to implement deforestation for zip, for instance) |
| 2025-11-21 11:09:59 | → | Vajb joins (~Vajb@n4bl3ovzcj023yptes7-1.v6.elisa-mobile.fi) |
| 2025-11-21 11:10:27 | <lucabtz> | you lost me |
| 2025-11-21 11:11:57 | <c_wraith> | If you strip out the newtype wrappers, that type is like (((... -> b) -> a) -> b), with infinite recursion on right sides of the arrows. |
| 2025-11-21 11:11:58 | <__monty__> | Is Void -> Void a problem for set theory? I can see how a "function" from a non-empty set to Void might be problematic. OTOH can't you say empty sets are not a thing because they're all inhabited by bottom? |
| 2025-11-21 11:12:17 | trickard_ | is now known as trickard |
| 2025-11-21 11:12:26 | → | califax joins (~califax@user/califx) |
| 2025-11-21 11:12:44 | <lucabtz> | c_wraith right |
| 2025-11-21 11:12:55 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2025-11-21 11:13:50 | <lucabtz> | but you stil lost me with domain theory because i have no idea what it is |
| 2025-11-21 11:14:25 | <lucabtz> | but thx for the insights, very interesting |
| 2025-11-21 11:15:24 | <c_wraith> | domain theory is... sort of adding infinite loops to functions, by introducing a bottom value to represent "this never completes" |
| 2025-11-21 11:15:32 | <c_wraith> | It's much more precise than that. |
| 2025-11-21 11:15:50 | <c_wraith> | But that's what it's going for. |
| 2025-11-21 11:25:08 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-11-21 11:36:22 | × | jle` quits (~jle`@2603:8001:3b00:11:658b:1126:1485:2a54) (Ping timeout: 246 seconds) |
| 2025-11-21 11:37:57 | → | jle` joins (~jle`@2603:8001:3b00:11:2f12:c034:12fc:8093) |
| 2025-11-21 11:43:48 | → | biberu joins (~biberu@user/biberu) |
| 2025-11-21 11:47:23 | × | tromp quits (~textual@2001:1c00:3487:1b00:697a:bc7a:f580:408c) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 2025-11-21 11:49:38 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 2025-11-21 11:49:41 | × | bwe quits (~bwe@2a01:4f8:1c1c:4878::2) (Read error: Connection reset by peer) |
| 2025-11-21 11:49:52 | → | bwe70296 joins (~bwe@2a01:4f8:1c1c:4878::2) |
| 2025-11-21 11:50:02 | → | califax joins (~califax@user/califx) |
| 2025-11-21 11:54:41 | → | down200 joins (~down200@shell.lug.mtu.edu) |
| 2025-11-21 12:00:58 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 256 seconds) |
| 2025-11-21 12:08:39 | <haskellbridge> | <Morj> I have a promo code for a month of discord nitro: HPN5-7QGj-yp58-xZPT-Eu5R-W2ke - for anyone who's fast and wants |
| 2025-11-21 12:10:16 | → | aditya_an1l joins (~aditya_an@user/aditya-an1l:63825) |
| 2025-11-21 12:17:13 | → | srazkvt joins (~sarah@user/srazkvt) |
| 2025-11-21 12:18:11 | <chromoblob> | that "Hyper" type looks like it could be used for games (in math sense) |
| 2025-11-21 12:23:21 | → | xff0x joins (~xff0x@ai083123.d.east.v6connect.net) |
| 2025-11-21 12:28:54 | × | fp quits (~Thunderbi@2001:708:20:1406::1370) (Ping timeout: 252 seconds) |
| 2025-11-21 12:36:06 | × | trickard quits (~trickard@cpe-88-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 2025-11-21 12:36:18 | <[exa]> | any users of `pipes` here? Is the performance OK-ish if I have gazillions of very little pipe-ish operations glued together? |
| 2025-11-21 12:36:19 | → | trickard_ joins (~trickard@cpe-88-98-47-163.wireline.com.au) |
| 2025-11-21 12:38:22 | → | fp joins (~Thunderbi@dhcp-86-136.eduroam.aalto.fi) |
| 2025-11-21 12:39:44 | × | bwe70296 quits (~bwe@2a01:4f8:1c1c:4878::2) (Read error: Connection reset by peer) |
| 2025-11-21 12:41:57 | <dminuoso> | [exa]: "OK-ish" and "bazillion" are very subjective terms. |
| 2025-11-21 12:42:03 | <dminuoso> | The answer is clearly "Yes, no, maybe" |
| 2025-11-21 12:42:56 | <dminuoso> | From what I read, pipes is on the faster side of things, but conduit/streaming generally are much faster. |
| 2025-11-21 12:43:17 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 2025-11-21 12:44:25 | <[exa]> | like, main question probably is that if some kind of fusion works in there, like with Text |
| 2025-11-21 12:44:29 | → | bwe joins (~bwe@2a01:4f8:1c1c:4878::2) |
| 2025-11-21 12:45:58 | <dminuoso> | Text fusion is so adhoc.. heh |
| 2025-11-21 12:46:06 | → | Googulator7 joins (~Googulato@81.183.235.203) |
| 2025-11-21 12:46:27 | <dminuoso> | But should be easy to check: Just look for how many rewrite rules are in pipes. |
| 2025-11-21 12:47:12 | <[exa]> | hm yeah good point |
| 2025-11-21 12:48:06 | <dminuoso> | Ultimately its tough to make predictions about when fusion occurs externally, even in case of text. |
| 2025-11-21 12:48:24 | <dminuoso> | It's best to just take your hot path and stare at the generated Core for way too much of your time. |
| 2025-11-21 12:49:43 | × | Googulator66 quits (~Googulato@team.broadbit.hu) (Ping timeout: 250 seconds) |
| 2025-11-21 12:49:44 | <[exa]> | turns out `streaming` kinda measured that for me, see below in the readme https://github.com/haskell-streaming/streaming |
| 2025-11-21 12:50:31 | <dminuoso> | [exa]: There seem to be quite a bunch of RULES that could facilitate shortcut fusion. |
| 2025-11-21 12:50:37 | <[exa]> | yeah |
| 2025-11-21 12:50:50 | <dminuoso> | But its really hard to predicte whether that actually ends up triggering. |
| 2025-11-21 12:51:02 | <dminuoso> | And it may easily differ between GHC versions or other GHC flags. |
| 2025-11-21 12:51:23 | × | qqe quits (~qqq@185.54.21.140) (Quit: Lost terminal) |
| 2025-11-21 12:53:59 | × | bwe quits (~bwe@2a01:4f8:1c1c:4878::2) (Remote host closed the connection) |
| 2025-11-21 12:54:23 | → | bwe joins (~bwe@2a01:4f8:1c1c:4878::2) |
| 2025-11-21 12:55:31 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 2025-11-21 12:58:43 | × | aditya_an1l quits (~aditya_an@user/aditya-an1l:63825) (Quit: WeeChat 4.7.1) |
| 2025-11-21 12:58:57 | <lucabtz> | c_wraith any resource with precise definitions for domain theory? |
| 2025-11-21 12:59:05 | × | fp quits (~Thunderbi@dhcp-86-136.eduroam.aalto.fi) (Remote host closed the connection) |
| 2025-11-21 12:59:07 | → | tromp joins (~textual@2001:1c00:3487:1b00:697a:bc7a:f580:408c) |
| 2025-11-21 13:02:03 | <lucabtz> | https://en.wikipedia.org/wiki/Domain_theory this page doesnt make much of a connection to haskell and im not even sure it is the same thing you mean because it is still speaking about sets in the end |
| 2025-11-21 13:03:14 | trickard_ | is now known as trickard |
| 2025-11-21 13:04:49 | × | ringo_ quits (~ringo@157.230.117.128) (Ping timeout: 264 seconds) |
| 2025-11-21 13:13:23 | × | Nachtgespenst quits (~user@user/siracusa) (Quit: Bye!) |
| 2025-11-21 13:18:15 | → | ringo_ joins (~ringo@157.230.117.128) |
| 2025-11-21 13:20:57 | → | kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be) |
| 2025-11-21 13:23:51 | → | Frostillicus joins (~Frostilli@pool-71-174-119-69.bstnma.fios.verizon.net) |
| 2025-11-21 13:25:08 | → | fp joins (~Thunderbi@130.233.70.141) |
| 2025-11-21 13:26:37 | → | ft joins (~ft@p4fc2aaeb.dip0.t-ipconnect.de) |
| 2025-11-21 13:33:18 | × | fp quits (~Thunderbi@130.233.70.141) (Quit: fp) |
| 2025-11-21 13:33:39 | → | fp joins (~Thunderbi@2001:708:20:1406::1370) |
| 2025-11-21 13:50:49 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Quit: ljdarj) |
| 2025-11-21 13:51:09 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 2025-11-21 14:02:16 | <kuribas> | Interesting how dependent types blur the line between dynamic and static. For example, in haskell I can choose to pass JSON Value as opaque values, or to parse them into datatypes. |
| 2025-11-21 14:02:23 | <kuribas> | But the two approaches are mutual exclusive. |
| 2025-11-21 14:02:46 | <kuribas> | Other than messing with generics, you lose flexibility by putting values in data. |
| 2025-11-21 14:03:51 | <kuribas> | However with a dependent types (idris) I can treat the schema as a description of the value, which can be manipulated at runtime, so it's both a static and dynamic value. |
| 2025-11-21 14:04:01 | <Hecate> | kuribas: they blur the line only if you don't take advantage of them, by putting conditions in the type like 'Vector n where n > 3" or something |
| 2025-11-21 14:04:47 | <kuribas> | Hecate: it's there where the flexbility comes from, by putting your schema in the type. |
| 2025-11-21 14:05:10 | <kuribas> | The "n" in vector can be considered a static value, or something dynamic that can be manipulated at runtime. |
| 2025-11-21 14:06:54 | <kuribas> | You can somewhat emulate this in haskell, by lifting the computations into type level haskell, but it gets cumbersome to do type level computations. |
| 2025-11-21 14:12:02 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 2025-11-21 14:17:04 | × | biberu quits (~biberu@user/biberu) (Read error: Connection reset by peer) |
| 2025-11-21 14:18:55 | × | Frostillicus quits (~Frostilli@pool-71-174-119-69.bstnma.fios.verizon.net) (Ping timeout: 250 seconds) |
| 2025-11-21 14:22:36 | <tomsmeding> | you can also create existentials, which sometimes allow you to do things that seem dependent |
| 2025-11-21 14:22:52 | <tomsmeding> | also GADTs and singletons allow you to simulate dependencies to a certain extent |
| 2025-11-21 14:23:28 | <tomsmeding> | though with singletons, you indeed either have to lift the computation to the type-level too, or have to deal with some kind of forgetfulness on the type level and use existentials |
| 2025-11-21 14:24:56 | × | Inline quits (~inlinE@2001-4dd7-ae97-0-4674-ae6d-2607-c022.ipv6dyn.netcologne.de) (Quit: Leaving) |
| 2025-11-21 14:25:28 | → | Frostillicus joins (~Frostilli@pool-71-174-119-69.bstnma.fios.verizon.net) |
| 2025-11-21 14:27:48 | → | humasect joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 2025-11-21 14:30:45 | → | Googulator83 joins (~Googulato@team.broadbit.hu) |
| 2025-11-21 14:32:01 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Ping timeout: 255 seconds) |
| 2025-11-21 14:34:09 | × | Googulator7 quits (~Googulato@81.183.235.203) (Ping timeout: 250 seconds) |
| 2025-11-21 14:41:11 | <kuribas> | yes |
| 2025-11-21 14:48:33 | → | Inline joins (~inlinE@2001-4dd7-ae97-0-4674-ae6d-2607-c022.ipv6dyn.netcologne.de) |
| 2025-11-21 14:49:14 | × | YoungFrog quits (~youngfrog@2a02:a03f:ca07:f900:5e58:dbf4:c0b:fbb3) (Quit: ZNC 1.7.x-git-3-96481995 - https://znc.in) |
All times are in UTC.