https://github.com/JuliaLang/julia/pull/10168
On Sat Feb 28 2015 at 3:45:31 PM Kirill Ignatiev <[email protected]> wrote: > There are libraries, like OpenGL, with very rich collections of enums. In > bindings to these libraries, the enums are used directly as integers, with > no special meaning attached to them, and the integers are passed directly > to the C functions. > > If you compare this with Haskell, for example, ( > https://hackage.haskell.org/package/OpenGL-2.11.0.0/docs/Graphics-Rendering-OpenGL-GL-BufferObjects.html), > there enums are transformed to Haskell type constructors, so it's no longer > possible to pass a wrong "kind" of enum to a C function. > > What's a good Julian way of specifying richer relationships between plain > C enums and their meaning? > > If symbols are the way to go, how would you write down a function that > takes a symbol as an argument, but only accepts a specific list of symbols? > Would you just use a Dict{Symbol, Cenum} to express the mapping between > Julia symbols and C enums? > > Do you think it's a good idea to replace C enums with "richer" Julia > values, when most users are probably just fine working with plain integers? > > This is an issue for most Julia bindings to C libraries, but it is > probably not very important because using plain enums doesn't lead to that > much trouble for anyone familiar with the underlying C library. > >
