Newest at the top
| 2026-03-07 13:58:12 +0100 | <lambdabot> | *Exception: <<timeout>> |
| 2026-03-07 13:58:05 +0100 | <int-e> | > fix id |
| 2026-03-07 13:58:03 +0100 | <lambdabot> | undefined, called at <interactive>:3:1 in interactive:Ghci1 |
| 2026-03-07 13:58:03 +0100 | <lambdabot> | CallStack (from HasCallStack): |
| 2026-03-07 13:58:03 +0100 | <lambdabot> | *Exception: Prelude.undefined |
| 2026-03-07 13:58:02 +0100 | <int-e> | > undefined |
| 2026-03-07 13:57:54 +0100 | <int-e> | And for a lazy language, you can also have thunks whereever bottoms can go, so you can't unpack anything in those places. |
| 2026-03-07 13:57:27 +0100 | <Guest89> | I haven't really figured how you can even get bottom in practice |
| 2026-03-07 13:57:07 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-07 13:56:55 +0100 | <int-e> | But you can still have Y (bottom, bottom) |
| 2026-03-07 13:56:38 +0100 | <int-e> | if you have data X = X (Int,Int) and data Y = Y !(Int,Int) then the difference is that you can have an `X bottom` value that's distinct from bottom, but `Y bottom` is just bottom. |
| 2026-03-07 13:56:06 +0100 | <Guest89> | I will play around and see what changes |
| 2026-03-07 13:55:36 +0100 | <Leary> | Yes. |
| 2026-03-07 13:55:10 +0100 | <Guest89> | right, but bangs force a semantics change? |
| 2026-03-07 13:54:24 +0100 | <Leary> | `UNPACK` is only a hint for the compiler; it can't fundamentally change the semantics, which include the fields of `(,)` being lazy---that blocks any further unpacking. |
| 2026-03-07 13:54:20 +0100 | <int-e> | yes |
| 2026-03-07 13:54:07 +0100 | <Guest89> | does it just transform the constructor into another one with the same arity as the tuples? |
| 2026-03-07 13:53:38 +0100 | <Guest89> | so what does unpack do in this case? |
| 2026-03-07 13:53:19 +0100 | <Leary> | No, the data constructors. `data Uid = Uid !Int !Int`; `data Ptr = PtrLeaf !Bool | PtrNode !Uid`; etc. |
| 2026-03-07 13:51:34 +0100 | <Guest89> | I assumed the unpack itself made it strict |
| 2026-03-07 13:51:29 +0100 | <Guest89> | I presume you mean at a function level? |
| 2026-03-07 13:48:05 +0100 | arandombit | (~arandombi@user/arandombit) arandombit |
| 2026-03-07 13:46:08 +0100 | merijn | (~merijn@62.45.136.136) (Ping timeout: 252 seconds) |
| 2026-03-07 13:45:36 +0100 | <Leary> | Guest89: All of your data is lazy, even `Uid`; `data Uid = Uid {-# UNPACK #-} !(Int, Int)` is essentially equivalent to `data Uid = Uid Int Int`. If you're not utilising that laziness, kill it with strictness annotations. |
| 2026-03-07 13:43:53 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) wootehfoot |
| 2026-03-07 13:39:11 +0100 | merijn | (~merijn@62.45.136.136) merijn |
| 2026-03-07 13:36:52 +0100 | Tuplanolla | (~Tuplanoll@88-114-89-88.elisa-laajakaista.fi) Tuplanolla |
| 2026-03-07 13:29:55 +0100 | <Guest89> | if anyone else has any suggestions in the meantime, this is how my comparators are defined for the busiest functions https://paste.tomsmeding.com/jSnEEitE |
| 2026-03-07 13:28:20 +0100 | <Guest89> | darn |
| 2026-03-07 13:28:16 +0100 | merijn | (~merijn@62.45.136.136) (Ping timeout: 244 seconds) |
| 2026-03-07 13:28:10 +0100 | <int-e> | no, but also: <+haskellbridge> <sm> got to go.. good luck |
| 2026-03-07 13:27:09 +0100 | <Guest89> | sorry I think I lost connection; I posted some replies to you sm but I'm not sure if they got through? |
| 2026-03-07 13:26:35 +0100 | Guest89 | (~Guest89@185.45.21.144) |
| 2026-03-07 13:23:39 +0100 | merijn | (~merijn@62.45.136.136) merijn |
| 2026-03-07 13:19:46 +0100 | target_i | (~target_i@user/target-i/x-6023099) target_i |
| 2026-03-07 13:14:10 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 2026-03-07 13:13:14 +0100 | czan | (~czan@user/mange) (Ping timeout: 245 seconds) |
| 2026-03-07 13:11:01 +0100 | gmg | (~user@user/gehmehgeh) (Remote host closed the connection) |
| 2026-03-07 13:09:37 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-07 13:06:30 +0100 | Square | (~Square@user/square) Square |
| 2026-03-07 13:06:12 +0100 | Square3 | (~Square@user/square) (Remote host closed the connection) |
| 2026-03-07 13:05:04 +0100 | fun-safe-math | (~fun-safe-@97.115.234.213) fun-safe-math |
| 2026-03-07 13:03:00 +0100 | fun-safe-math | (~fun-safe-@97.115.234.213) () |
| 2026-03-07 12:59:28 +0100 | bggd__ | (~bgg@2a01:e0a:fd5:f510:537e:c033:7f9f:3728) |
| 2026-03-07 12:58:53 +0100 | <haskellbridge> | <sm> got to go.. good luck |
| 2026-03-07 12:58:49 +0100 | merijn | (~merijn@62.45.136.136) (Ping timeout: 244 seconds) |
| 2026-03-07 12:56:58 +0100 | Guest89 | (~Guest89@185.45.21.144) (Ping timeout: 240 seconds) |
| 2026-03-07 12:54:15 +0100 | merijn | (~merijn@62.45.136.136) merijn |
| 2026-03-07 12:54:13 +0100 | __monty__ | (~toonn@user/toonn) toonn |
| 2026-03-07 12:52:51 +0100 | <haskellbridge> | <sm> it looks like there's a lot comparing needed to do an insert. Is it your own custom priority queue ? |