On Montag, 27. August 2018 02:17:06 CEST you wrote: > In my experience, if #f doesn't make sense as a legal value, then using #f > is probably the idiomatic Scheme way to go. > It composes with SRFI-2's and-let* in a way similar to Haskell's Nothing > within the "do" notation. > I did find it useful when I was implementing a pattern matching facility, > where I could distinguish between an empty list of (successful) bindings > and a failed match. > But I think you would need to tell us more about the library: where do the > values come from and what do they represent. What would this "nil" data > type be supposed to stand for?
I literally don't know where the values will come from, that's the thing. MessagePack is a data serialization format: a process has some in-memory object, turns it into bytes and later reads those bytes to generate an in- memory object. The bytes could come from an entirely different process in a language which distinguishes between "nothing", "falsely" and "empty list". If you use MessagePack for a remote procedure call and on the other end you *must* be able to distinguish between those things, then you also *must* be able to distinguish them on Guile's end as well.
