Combining Processing with Racket

Conference paper
Part of the Communications in Computer and Information Science book series (CCIS, volume 563)


Processing is a programming language created to teach programming in a visual context. Despite its success, Processing remains a niche language with limited applicability in the architectural field, as no Computer-Aided Design (CAD) application supports Processing. This work presents an implementation of Processing for the Racket platform, that transforms Processing code into semantically equivalent Racket code. Our Processing implementation is developed as a Racket module language for interoperability with Racket and other module languages of Racket’s language ecosystem. Our implementation allows us to take advantage of Rosetta, a Racket library that provides access to several CAD back-ends (e.g. AutoCAD, Rhinoceros, SketchUp). As a result, architects and designers can take advantage of our implementation to use Processing with their favourite CAD application.


Processing Racket Compilers Interoperability 



This work was partially supported by national funds through Fundação para a Ciência e a Tecnologia (FCT) with reference UID/CEC/50021/ 2013, and by the Rosetta project under contract PTDC/ATP-AQI/5224/2012.


  1. 1.
    Reas, C., Fry, B.: Processing: programming for the media arts. AI Soc. 20(4), 526–538 (2006)CrossRefGoogle Scholar
  2. 2.
    Flatt, M., Findler, R.B.: The racket guide (2011). Accessed 02 May 2014
  3. 3.
    Lopes, J., Leitão, A.: Portable generative design for CAD applications. In: Proceedings of the 31st Annual Conference of the Association for Computer Aided Design in Architecture, pp. 196–203 (2011)Google Scholar
  4. 4.
    Flatt, M.: Creating languages in racket. Commun. ACM 55(1), 48–56 (2012)CrossRefGoogle Scholar
  5. 5.
    Ramos, P.P., Leitão, A.M.: An implementation of python for racket. In: 7th European Lisp Symposium, p. 72 (2014)Google Scholar
  6. 6.
    Tobin-Hochstadt, S., St-Amour, V., Culpepper, R., Flatt, M., Felleisen, M.: Languages as libraries. In: Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 132–141. ACM (2011)Google Scholar
  7. 7.
    Maeda, J.: Design by Numbers. MIT Press, Cambridge (1999)Google Scholar
  8. 8.
    Resig, J., Fry, B., Reas, C.: Processing. js (2008)Google Scholar
  9. 9.
    Bader-Natal, A.: Sketchpad (2011). Accessed 28 April 2015
  10. 10.
    Ashkenas, J.: Ruby-processing (2015). Accessed 28 April 2015
  11. 11.
    Feinberg, J., Gilles, J., Alkov, B.: Python for processing (2014). Accessed 28 April 2015
  12. 12.
    Gray, K.E., Flatt, M.: Compiling java to PLT scheme. In: Proceedings of 5th Workshop on Scheme and Functional Programming, pp. 53–61 (2004)Google Scholar
  13. 13.
    Gray, K.E., Flatt, M.: ProfessorJ: a gradual introduction to java through language levels. In: Companion of the 18th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pp. 170–177. ACM (2003)Google Scholar
  14. 14.
    Findler, R.B., Flanagan, C., Flatt, M., Krishnamurthi, S., Felleisen, M.: DrScheme: a pedagogic programming environment for scheme. In: Glaser, H., Hartel, P., Kuchen, H. (eds.) PLILP 1997. LNCS, vol. 1292, pp. 369–388. Springer, Heidelberg (1997) CrossRefGoogle Scholar
  15. 15.
    Louis-Rosenberg, J.: Objexport (2013). Accessed 29 April 2015
  16. 16.
    Owens, S.: Parser tools: lex and yacc-style parsing (2011). Accessed 22 September 2014
  17. 17.
    Flatt, M, Findler, R.B.:. The racket guide, chapter 10.3 continuations (2011). Accessed 05 May 2014
  18. 18.
    Flatt, M.: Composable and compilable macros: you want it when? SIGPLAN Not. 37(9), 72–83 (2002)CrossRefGoogle Scholar

Copyright information

© Springer International Publishing Switzerland 2015

Authors and Affiliations

  1. 1.INESC-ID, Instituto Superior TécnicoUniversidade de LisboaLisboaPortugal

Personalised recommendations