Michael Thomas
banner
enetsee.bsky.social
Michael Thomas
@enetsee.bsky.social
PL enthusiast & professional checker of the types
Oops, wrong way round, try this:

type 'a my_record = {internal: 'a; show: 'a -> string}

type any_record = Any : 'a my_record -> any_record

let make_any r = Any r

let show (Any {internal; show}) = show internal
October 9, 2025 at 5:03 PM
type 'a my_record = {
internal: 'a;
show: 'a -> string
}

type any_record = {
my_record: 'a. 'a my_record
}

let show { my_record } =
my_record.show my_record.internal
October 9, 2025 at 3:44 PM
I see; I’d probably still lean towards saying that this _is_ a new skill. The resulting error messages are too verbose for humans and there was quite a bit of iteration to understand the trade offs for LLM consumption. Either way, agree a lot of the new buzzwords are definitely relabling!
July 7, 2025 at 8:20 AM
That, to me, is very different to prompt engineering. I guess I see the former as the exercise of optimising tooling output for consumption by LLMs
July 7, 2025 at 7:36 AM
I feel you but I have a slightly different take on this. Recently I reworked the error provenance system of a type checker and updated the error reporting system to turn the resulting graph into English language prose. That’s what I understand as an example of context engineering
July 7, 2025 at 7:35 AM
Constrained and controlled experiences required tooling developers to understand the problem they were trying to solve. Clearly unnecessary when you can just pin your hopes on luck and the next model somehow beating domain specific solution…
July 4, 2025 at 4:57 PM
Possibly to avoid left associativity of bind; CPS is one solution. See okmij.org/ftp/Haskell/... for problems with the approach and very cool solutions!
okmij.org
November 18, 2024 at 8:25 PM