Dear list,

having solved the trouble with shared libraries, I wrote some "constructor" functions in Jolt to be able to build muy objects more conveniently (i.e., avoiding the talkative keyword message syntax). They look like this, for example:

(TYPE '23)

(assuming that TYPE is some type parameterised with a number) with this implementation:

(syntax TYPE (lambda (node compiler) `[MyType with: ,[node at: '1]]))

This works fine unless I want to build a list of such "tagged type constructions". What I would like to have is a LIST syntax definition that accepts an arbitrary number of type constructor applications and effectively returns an AST with all the expanded type constructions.

(LIST (TYPE '23) (TYPE '42))

Another usage example: (ANOTHER-TYPE (LIST (TYPE '23) (TYPE '42)))

My initial thought was that quasiquotation would help. I've been experimenting like mad but could not come up with a solution. Here's the (non-working) quasiquotation thing:

(syntax LIST (lambda (node compiler)
    `[OrderedCollection withAll: ,@[node copyFrom: '1]]))

The trouble seems to be that ,@ expands all collection items in place, instead of providing a collection again. #withAll:, however, obviously expects a collection.

How should the syntax definition look?

Best,

Michael

--
Dr.-Ing. Michael Haupt                [email protected]
Software Architecture Group           Phone:  ++49 (0) 331-5509-542
Hasso Plattner Institute for          Fax:    ++49 (0) 331-5509-229
Software Systems Engineering          http://www.hpi.uni-potsdam.de/swa/
Prof.-Dr.-Helmert-Str. 2-3, D-14482 Potsdam, Germany

Hasso-Plattner-Institut für Softwaresystemtechnik GmbH, Potsdam
Amtsgericht Potsdam, HRB 12184
Geschäftsführung: Prof. Dr. Christoph Meinel






_______________________________________________
fonc mailing list
[email protected]
http://vpri.org/mailman/listinfo/fonc

Reply via email to