2026/02/23

Newest at the top

2026-02-23 15:17:12 +0100 <merijn> Bytestring shipping it's own Lift is a MAJOR buff to that library though
2026-02-23 15:16:35 +0100 <merijn> Sure, but the examples are currently also my test :p
2026-02-23 15:16:32 +0100 <tomsmeding> if you explicitly say that this example works well only for bytestring >= ...
2026-02-23 15:16:21 +0100 <tomsmeding> I don't think it's necessary for examples in the documentation prose to compile with old dependencies
2026-02-23 15:15:53 +0100 <merijn> tomsmeding: Only if I bump the lower bound by a lot, though
2026-02-23 15:15:38 +0100 <merijn> Milan_Vanca: Well, that you go. You can just use validated-literals and get whatever implementation you want, efficient embedding AND compile time validation
2026-02-23 15:15:31 +0100 <tomsmeding> (I'll stop now)
2026-02-23 15:15:23 +0100 <tomsmeding> at that point there's little to maintain in two places any more, right, and you can just put the simplified instance in the haddocks, right? :)
2026-02-23 15:14:45 +0100 <merijn> So you can literally just not implement liftResult and it's instantly good
2026-02-23 15:14:40 +0100 <tomsmeding> :D
2026-02-23 15:14:33 +0100 <merijn> ByteString now just has it's own Lift instance using BytesPrimL :p
2026-02-23 15:14:21 +0100 <merijn> Cool beans
2026-02-23 15:14:18 +0100 <merijn> oh, wait
2026-02-23 15:13:42 +0100 <merijn> Since everything with a native `Lift` instance will just work
2026-02-23 15:13:28 +0100 <merijn> That said, you should only really need `liftResult` if you have weird datatype like ByteString to begin with
2026-02-23 15:13:14 +0100 <tomsmeding> have an extra build step that injects the example into haddocks!
2026-02-23 15:13:00 +0100 <tomsmeding> yes that's the downside
2026-02-23 15:12:54 +0100 <merijn> tomsmeding: The problem is that I don't wanna maintain the example in two places (docs and examples) :p
2026-02-23 15:12:50 +0100 <tomsmeding> (it's not like I practice what I preach all that well either)
2026-02-23 15:12:39 +0100 <merijn> It's just been years since I actually looked at it :p
2026-02-23 15:12:23 +0100 <tomsmeding> I'm not saying that you must or anything, but I think it would make the package more accessible if you wish
2026-02-23 15:12:09 +0100 <tomsmeding> also Even doesn't have the actual definition, does it?
2026-02-23 15:11:33 +0100 <merijn> ah, now, just the `Even` one
2026-02-23 15:11:25 +0100 <tomsmeding> there is "See the ByteString example module for an example." but it doesn't point to anything
2026-02-23 15:11:12 +0100 <tomsmeding> is it?
2026-02-23 15:11:03 +0100 <merijn> I thought?
2026-02-23 15:10:57 +0100 <merijn> tomsmeding: It is :p
2026-02-23 15:10:45 +0100 <tomsmeding> I do not typically go to the repository looking for an examples/ directory when looking at documentation
2026-02-23 15:10:19 +0100 <tomsmeding> merijn: suggestion: put that example (and perhaps others that you consider important) in the haddocks
2026-02-23 15:09:24 +0100 <merijn> If you "simply" rewrite `liftResult` to use BytesPrimL, then it should "Just Work (TM)"
2026-02-23 15:08:33 +0100 <merijn> tomsmeding: Yeah, I was thinking of this example: https://github.com/merijn/validated-literals/blob/master/examples/ByteString.hs
2026-02-23 15:08:25 +0100 <merijn> tomsmeding: That's just my ByteString example, yeah
2026-02-23 15:08:24 +0100 <tomsmeding> (I assume this is validated-literals?)
2026-02-23 15:08:10 +0100 <tomsmeding> merijn: "that still compiles a List[Word8] into your executable" -- is that also the user and not your package, then?
2026-02-23 15:07:45 +0100 <merijn> So using BytesPrimL is left as an exercise for the reader :p
2026-02-23 15:07:39 +0100Frostillicus(~Frostilli@pool-71-174-119-69.bstnma.fios.verizon.net)
2026-02-23 15:07:35 +0100tromp(~textual@2001:1c00:3487:1b00:309d:e3b0:b1c4:2c66)
2026-02-23 15:07:24 +0100 <merijn> the ByteString thing is just an example usecase
2026-02-23 15:07:10 +0100 <merijn> c_wraith: My code doesn't do anything directly
2026-02-23 15:06:50 +0100tomsmedingsuspects a `[Word8]` is worse than a `String` literal because of GHC's UTF-8 packing
2026-02-23 15:06:49 +0100 <c_wraith> you could update your package to use BytesPrimL
2026-02-23 15:06:19 +0100 <merijn> Although that still compiles a List[Word8] into your executable and I dunno how GHC bakes that :p
2026-02-23 15:05:49 +0100 <merijn> I have a package that does the conversion at compile time for you
2026-02-23 15:04:58 +0100 <merijn> Also
2026-02-23 15:04:54 +0100sm2n(ae95cb1267@user/sm2n) sm2n
2026-02-23 15:04:46 +0100sm2n(ae95cb1267@user/sm2n) (Server closed connection)
2026-02-23 15:04:30 +0100 <merijn> There's an inline conversion from the dense binary String representation of GHC directly to ByteString
2026-02-23 15:04:10 +0100 <merijn> Well, I guess not quite
2026-02-23 15:04:04 +0100 <merijn> __monty__: Yes
2026-02-23 15:02:10 +0100 <c_wraith> I guess you could do some TH stuff to wrap unsafePackAddressLen at compile time, so it's O(1) at runtime