On Tue, Aug 16, 2011 at 3:38 PM, David Kastrup <d...@gnu.org> wrote: > > Compile Lilypond with > -DSCM_DEBUG_TYPING_STRICTNESS=2 > > The guile documentation states quite clearly > > -- C Type: SCM > `SCM' is the user level abstract C type that is used to represent > all of Guile's Scheme objects, no matter what the Scheme object > type is. No C operation except assignment is guaranteed to work > with variables of type `SCM', so you should only use macros and > functions to work with `SCM' values. Values are converted between > C data types and the `SCM' type with utility functions and macros. > > Now the Lilypond code base is chock full of code comparing SCM values. > And it likely also contains a number of cases where C types (like > booleans) and Scheme type are getting mixed up.
The abstraction that guile uses is not that tight. I would start worrying about this once the GUILE team starts actually using the constraints mentioned in the above snippet. Given the current release rate of Guile, I wouldn't be too worried. > But with the current code base, cleaning this all up is going to be a > lot of work. Not hard to do, but a lot. The only real problem are boolean conversions because they are very wrong, ie, SCM x = ... if (x) { .. } for the rest, making lilypond SCM typing clean is just a lot of work with no benefits at all. (and I am speaking as a GUILE developer here as well) -- Han-Wen Nienhuys - han...@xs4all.nl - http://www.xs4all.nl/~hanwen _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel