unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
* What is the point of bytevectors?
@ 2020-09-12  7:49 divoplade
  2020-09-12 10:35 ` Linus Björnstam
  2020-09-12 16:48 ` John Cowan
  0 siblings, 2 replies; 5+ messages in thread
From: divoplade @ 2020-09-12  7:49 UTC (permalink / raw)
  To: Guile User

Hello guile users,

I am writing a library mixing some scheme code and C code, and I have
two options for interfacing C strings:
1. Use bytevectors;
2. Use strings with byte access semantics (so-called latin-1, which is
really a misleading name since it will most certainly contain utf-8-
encoded unicode text).

From the C side, they have nearly identical APIs, and the conversion
functions do not transcode anything.

From the scheme side, however:
1. The bytevector library needs to be imported;
2. The function names have way more characters to type;
3. The bytevector library is missing a lot of text functions (like
join, split, trim, pad, searching...).

If the user wants to always manipulate unicode (decoded) strings, using
either bytevectors or latin-1 strings require transcoding to enter the
library and to exit the library, so either option is valid.

But if the user wants to always manipulate utf-8-encoded strings [1],
using bytevectors is impossible or much more difficult (see points
above).

So, why should I ever use bytevectors?

divoplade

[1] https://utf8everywhere.org/




^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2020-09-12 17:24 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-12  7:49 What is the point of bytevectors? divoplade
2020-09-12 10:35 ` Linus Björnstam
2020-09-12 16:48 ` John Cowan
2020-09-12 17:14   ` divoplade
2020-09-12 17:24     ` John Cowan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).