Lazy Functional Meta-CASE Programming

  • S. Joosten
Part of the IFIP — The International Federation for Information Processing book series (IFIPAICT)


This paper proposes the use of a lazy functional programming language, such as Miranda or Haskell, as embedded language in meta-CASE tools. Functional programming saves time and effort, because method engineers write programs on the appropriate level of abstraction, without any concern about the order of computations. As a consequence, method engineers build more reliable tools for application engineers to work with. The argument is exemplified by a meta-CASE program, which defines the well known Entity-Relationship modeling technique. Two different semantics are presented to demonstrate typical use: one is the transformation to a relational model and the other is SQL code generation. The full Haskell program to do this is presented, showing the conciseness and the simplicity of that program. This illustrates the type of programming that is done by a method engineer to specify customized modeling techniques. This paper is written for designers of CASE and meta-CASE tools. The work is also interesting for functional programmers who wish to see an appropriate application of lazy evaluation.


Method Model Integrity Constraint Functional Programming Graph Algorithm Functional Language 
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.


  1. [Abramsky, 1990]
    Abramsky, S. (1990). The Lazy lambda-calculus,pages 65–117. Addison Wesley.Google Scholar
  2. [Bird and Wadler, 1988]
    Bird, R. and Wadler, P. (1988). Introduction to Functional Programming. International Series in Computer Science. Prentice Hall, New York.Google Scholar
  3. [Elmasri and Navathe, 1989]
    Elmasri, R. and Navathe, S. B. (1989). Fundamentals of Database Systems. Addison-Wesley World Student Series. Benjamin/Cummings, Redwood City, CA 94065.Google Scholar
  4. [Gibbons, 1995]
    Gibbons, J. (1995). An initial-algebra approach to directed acyclic graphs. In Möller, B., editor, Mathematics of Program Construction, number 947 in Lecture Notes in Computer Science, pages 122–138, Berlin. Springer-Verlag.Google Scholar
  5. [Harmsen et al., 1994]
    Harmsen, F., Brinkkemper, S., and Oei, H. (1994). Situational method engineering for information system projects. In 011e, T. and Stuart, A. V., editors, Proceedings of the IFIP WG8.1 Working Conference CRIS’94, pages 169–194, Amsterdam. North-Holland.Google Scholar
  6. [Harrison, 1993]
    Harrison, R. (1993). Abstract data types in Standard ML. John Wiley Si Sons, Chichester, England.Google Scholar
  7. [Hudak and Fasel, 1992]
    Hudak, P. and Fasel, J. H. (1992). A gentle introduction to haskell. ACM SIGPLAN Notices, 27(5).Google Scholar
  8. [Hudak et al., 1992]
    Hudak, P., Peyton Jones, S. L., and Wadler (editors), P. (1992). Report on the programming language haskell, a non-strict purely functional language (version 1.2). SIGPLAN Notices, 27 (3).Google Scholar
  9. [Joosten, 1989]
    Joosten, S. (1989). The use of functional programming in software development. PhD thesis, University of Twente, dept. of Comp. Sc.Google Scholar
  10. [Joosten, 1994]
    Joosten, S. (1994) Trigger modelling for workflow analysis. In Proceedings CON ‘84: Workflow Management, Challenges, Paradigms and Products (Oct. 1994), G. Chroust and A. Benczúr, Eds., Oldenbourg, Wien, München, pp. 236–247.Google Scholar
  11. [Kashiwagi and Wise, 1991]
    Kashiwagi, Y. and Wise, D. S. (1991). Graph algorithms in a lazy functional programming language. Technical Report 330, Comp. Sci. Dept, Indiana Univ., Bloomington, Indiana.Google Scholar
  12. [King and Launchbury, 1993]
    King, D. J. and Launchbury, J. (1993). Functional graph algorithms with depth first searc. In Hammond, K. and O’Donnell, J. T., editors, Functional programming, volume II, pages II.1–11. 12. Springer-Verlag, Berlin.Google Scholar
  13. [Kumar and Welke, 1992]
    Kumar, K. and Welke, R. J. (1992). Methodology Engineering: A Proposal for Situation-Specific Methodology Construction, chapter 15, pages 257–269. Series in Information Systems. John Wiley, Chichester.Google Scholar
  14. [Merberth, 1991]
    Merberth, G. (1991). Maestro II - das integrierte CASE-System von Softlab. BI Wissenschafsverlag, 3 edition.Google Scholar
  15. [Milner et al., 1989]
    Milner, R., Tofte, M., and Harper, R. (1989). The Definition of Standard ML. MIT Press, Cambridge, MA.Google Scholar
  16. [Rees and Clinger (editors.), 86]
    Rees, J. and Clinger (editors.), W. (86). The revised report on the algorithmic language scheme. SIGPLAN Notices,21(12):37–79.Google Scholar
  17. [Smolander et al., 1991]
    Smolander, K., Lyytinen, K., Tahvanainen, V.-P., and Marttiin, P. (1991). Metaedit — a flexible graphical environment for methodology modelling. In Andersen, R., Bubenko, J., and Solvberg, A., editors, Proc. Third International Conference on Advanced Information Systems Engineering (CAiSE’91), number 498 in Lecture Notes in Computer Science, Berlin. Springer-Verlag.Google Scholar
  18. [Turner, 1985]
    Turner, D. A. (1985). Miranda: A non-strict functional language with polymorphic types. In Jouannaud, J.-P., editor, 2nd Functional programming languages and computer architecture, number 201 in Lecture Notes in Computer Science, pages 1–16, Berlin. Springer-Verlag.Google Scholar
  19. [Yourdon, 1989]
    Yourdon, E. (1989). Modern Structured Analysis. Yourdon Press Computing Series. Yourdon Press, New Jersey.Google Scholar

Copyright information

© Springer Science+Business Media Dordrecht 1996

Authors and Affiliations

  • S. Joosten
    • 1
  1. 1.Computer Information Systems departmentGeorgia State UniversityAtlantaUSA

Personalised recommendations