Hi, I'm trying to create a data dictionary [1] to generate code from it. But since I'm a scheme newbie I was wondering if this is the best method:
{{{ (define-syntax table (syntax-rules () ((table name ...) (list 'table name ...)))) (define-syntax column (syntax-rules () ((column name ...) (list 'column name ...)))) (define-syntax type (syntax-rules () ((type symbol) (cons 'type symbol)))) (define-syntax constraint (syntax-rules () ((constraint symbol) (cons 'constraint symbol)))) (define-syntax length (syntax-rules () ((length value) (cons 'length value)))) (define *projects-table* (table "projects" (column "id" (type 'integer) (constraint 'primary-key)) (column "title" (type 'string) (length 32) (constraint 'not-null)))) }}} This way I can write s-exp as in the example *projects-table* an after a load I will have the data structure ready to work with it. {{{ scheme@(guile-user)> (load "dd.scm") scheme@(guile-user)> *projects-table* (table "projects" (column "id" (type . integer) (constraint . primary-key)) (column "title" (type . string) (length . 32) (constraint . not-null))) }}} I think this could be a good way to define configuration files too. What do you think? Exists better alternatives with Guile? This mail should go to another list? :-) Regards, -- Romel R. Sandoval-Palomo [1]http://database-programmer.blogspot.com/2008/06/using-data-dictionary.html