text icon indicating copy to clipboard operation
text copied to clipboard

Add valid functions

Open phadej opened this issue 2 years ago • 2 comments

-- check invariants
valid :: Text -> Bool

For strict text it would check that array is big enough to have offset+length, and that the slice is valid utf8.

For lazy text it would check the above, and chunk invariants.

These functions would be very useful (in writing tests) when one tinkers with internals. (Either in text itself, or other packages).

There are strictInvariant and lazyVariant for lazy text, but they error. Not entirely, but almost useless in tests.

phadej avatar Jan 09 '22 16:01 phadej

I'd prefer isValid, but otherwise I'm in favor of this.

Bodigrim avatar Jan 09 '22 16:01 Bodigrim

valid is inspired by the name in containers. Whatever works.

Also: https://hackage.haskell.org/package/perhaps-0/docs/Data-Perhaps.html is one nice way to combine error messages with Bool. (That would be great, but not worth dependency, just FYI).

phadej avatar Jan 09 '22 16:01 phadej