The Essence of Data Access in Cω

The Power is in the Dot!
  • Gavin Bierman
  • Erik Meijer
  • Wolfram Schulte
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3586)


In this paper we describe the data access features of Cω, an experimental programming language based on C# currently under development at Microsoft Research. Cω targets distributed, data-intensive applications and accordingly extends C#’s support of both data and control. In the data dimension it provides a type-theoretic integration of the three prevalent data models, namely the object, relational, and semi-structured models of data. In the control dimension Cω provides elegant primitives for asynchronous communication. In this paper we concentrate on the data dimension. Our aim is to describe the essence of these extensions; by which we mean we identify, exemplify and formalize their essential features. Our tool is a small core language, FCω, which is a valid subset of the full Cω language. Using this core language we are able to formalize both the type system and the operational semantics of the data access fragment of Cω.


Yield Break Operational Semantic Stream Type Choice Type Typing Judgement 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Albano, A., Ghelli, G., Orsini, R.: Types for databases: the Galileo experience. In: Proceedings of DBPL (1989)Google Scholar
  2. 2.
    Albano, A., Ghelli, G., Orsini, R.: Fibonacci: A programming language for object databases. Journal of Very Large Data Bases 4(3), 403–444 (1995)CrossRefGoogle Scholar
  3. 3.
    Benton, N., Cardelli, L., Fournet, C.: Modern concurrency abstractions for C#. TOPLAS 26(5), 769–804 (2004)CrossRefGoogle Scholar
  4. 4.
    Benzaken, V., Castagna, G., Frisch, A.: CDuce: An XML-centric general-purpose language. In: Proceedings of ICFP (2003)Google Scholar
  5. 5.
    Bierman, G.M., Parkinson, M.J., Pitts, A.M.: MJ: An imperative core calculus for Java and Java with effects. Technical Report 563, University of Cambridge (2003)Google Scholar
  6. 6.
    Bracha, G., Odersky, M., Stoutamire, D., Wadler, P.: Making the future safe for the past: Adding genericity to Java. In: Proceedings of OOPSLA (1998)Google Scholar
  7. 7.
    Breazu-Tannen, V., Coquand, T., Gunter, C.A., Scedrov, A.: Inheritance as implicit coercion. Information and computation 93(1), 172–221 (1991)zbMATHCrossRefMathSciNetGoogle Scholar
  8. 8.
    Buneman, P., Pierce, B.C.: Union types for semistructured data. In: Proceedings of IDPL (1998)Google Scholar
  9. 9.
    Chamberlin, D., et al.: XQuery use cases,
  10. 10.
    Boag, S., et al.: XQuery,
  11. 11.
    Flatt, M., Krishnamurthi, S., Felleisen, M.: Classes and mixins. In: Proceedings of POPL (1998)Google Scholar
  12. 12.
    Fournét, C., Gonthier, G.: The reflexive chemical abstract machine and the join-calculus. In: Proceedings of POPL (1996)Google Scholar
  13. 13.
    Gapeyev, V., Pierce, B.C.: Regular object types. In: Cardelli, L. (ed.) ECOOP 2003. LNCS, vol. 2743. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  14. 14.
    Harren, M., Raghavachari, M., Shmueli, O., Burke, M., Sarkar, V., Bordawekar, R.: XJ: Integration of XML processing into Java. Technical report, IBM Research (2003)Google Scholar
  15. 15.
    Hosoya, H., Pierce, B.C.: XDuce: A typed XML processing language. In: Suciu, D., Vossen, G. (eds.) WebDB 2000. LNCS, vol. 1997, p. 226. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  16. 16.
    Hosoya, H., Vouillon, J., Pierce, B.C.: Regular expression types for XML. In: Proceedings of ICFP (2000)Google Scholar
  17. 17.
    Howard, M., LeBlanc, D.: Writing Secure Code. Microsoft Press, Redmond (2003)Google Scholar
  18. 18.
    Igarashi, A., Pierce, B.C., Wadler, P.: Featherweight Java: A minimal core calculus for Java and GJ. ACM TOPLAS 23(3), 396–450 (2001)CrossRefGoogle Scholar
  19. 19.
    Leijen, D., Meijer, E.: Domain Specific Embedded Compilers. In: Proceedings of Conference on Domain-Specific Languages (1999)Google Scholar
  20. 20.
    Matthes, F., Müßig, S., Schmidt, J.W.: Persistent polymorphic programming in Tycoon: An introduction. Technical report, University of Glasgow (1994)Google Scholar
  21. 21.
    Meijer, E., Schulte, W., Bierman, G.M.: Programming with circles, triangles and rectangles. In: Proceedings of XML (2003)Google Scholar
  22. 22.
    Meijer, E., Schulte, W., Bierman, G.M.: Unifying tables, objects and documents. In: Proceedings of DP-COOL (2003)Google Scholar
  23. 23.
    Pierce, B.C.: Types and programming languages. MIT Press, Cambridge (2002)Google Scholar
  24. 24.
    Price, J.: Java programming with Oracle SQLJ. O’Reilly, Sebastopol (2002)Google Scholar
  25. 25.
    Yu, D., Kennedy, A., Syme, D.: Formalization of generics for the .NET common language runtime. In: Proceedings of POPL (2004)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2005

Authors and Affiliations

  • Gavin Bierman
    • 1
  • Erik Meijer
    • 2
  • Wolfram Schulte
    • 3
  1. 1.Microsoft ResearchUK
  2. 2.Microsoft CorporationUSA
  3. 3.Microsoft ResearchUSA

Personalised recommendations