15 minutes ago, Neil Toronto wrote: > Eli Barzilay wrote: > > (I don't see why, either way you need some pointer going to some > > data.) > > It looks like this: > > (struct bigfloat (mpfr-value) > #:property prop:custom-write ...) > > I have a struct type with just one field. Every time I'm forced into > doing that, it seems like a pointless indirection. (It's *only* an > indirection; I'm not aggregating anything.) But if that's the only way, > I'm fine with it.
(You can think about this as packing up a C pointer with a racket struct type.) If you're doing a language, you can also play with the display/write handlers. > > Why aren't you using a byte string directly? > > Let me sum up. > > The C library provides gimme_string (actually something with a more > complex type signature), which allocates a char* in some special way > and returns it. The library also provides special_free, which takes > a char* and frees it in a special way. > > I need to call gimme_string and use the return value as a string, > but also have the return value as a pointer so I can pass it to > special_free. If I get gimme_string with (_fun -> _string) Remember that there's a step here that converts the char* string into a racket string (in ucs-4). > or (_fun -> _bytes), I don't get a pointer, I get a string? or a > bytes?. A byte string can be used as a pointer. -- ((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay: http://barzilay.org/ Maze is Life! _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users