skip to main content
10.1145/800087.802799acmconferencesArticle/Chapter ViewAbstractPublication PageslfpConference Proceedingsconference-collections
Article
Free Access

HOPE: An experimental applicative language

Published:25 August 1980Publication History

ABSTRACT

An applicative language called HOPE is described and discussed. The underlying goal of the design and implementation effort was to produce a very simple programming language which encourages the construction of clear and manipulable programs. HOPE does not include an assignment statement; this is felt to be an important simplification. The user may freely define his own data types, without the need to devise a complicated encoding in terms of low-level types. The language is very strongly typed, and as implemented it incorporates a typechecker which handles polymorphic types and overloaded operators. Functions are defined by a set of recursion equations; the left-hand side of each equation includes a pattern used to determine which equation to use for a given argument. The availability of arbitrary higher-order types allows functions to be defined which 'package' recursion. Lazily-evaluated lists are provided, allowing the use of infinite lists which could be used to provide interactive input/output and concurrency. HOPE also includes a simple modularisation facility which may be used to protect the implementation of an abstract data type.

References

  1. 1.Aubin, R. Strategies for Mechanizing Structural Induction. Proc. 5th Int. Joint Conf. on Artificial Intelligence, Cambridge, Massachusetts, August, 1977, pp. 363-369.Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. 2.Backus, J. Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs. Comm. ACM 21, 8 (August 1978), 613-641. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. 3.Boyer, R.S. and Moore, J.S. A Computational Logic. Academic Press, 1980.Google ScholarGoogle Scholar
  4. 4.Burge, W.H. Recursive Programming Techniques. Addison-Wesley, 1975.Google ScholarGoogle Scholar
  5. 5.Burstall, R.M. Design Considerations for a Functional Programming Language. Infotech State of the Art Conference: The Software Revolution, Copenhagen, October, 1977.Google ScholarGoogle Scholar
  6. 6.Burstall, R.M. Electronic Category Theory. Proc. 9th Int. Symp. on Mathematical Foundations of Computer Science, Rydzyna, Poland, September, 1980. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. 7.Burstall, R.M. and Darlington, J. A Transformation System for Developing Recursive Programs. J. ACM 24, 1 (January 1977), 44-67. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. 8.Burstall, R.M. and Goguen, J.A. Putting Theories Together to Make Specifications. Proc. 5th Int. Joint Conf. on Artificial Intelligence, Cambridge, Massachusetts, August, 1977, pp. 1045-1058.Google ScholarGoogle Scholar
  9. 9.Burstall, R.M. and Sannella, D.T. HOPE User's Manual. In preparation.Google ScholarGoogle Scholar
  10. 10.Dahl, O-J., Dijkstra, E.W. and Hoare C.A.R. Structured Programming. Academic Press, 1972. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. 11.Dahl, O-J., Myhrhaug, B. and Nygaard, K. The SIMULA 67 Common Base Language. Publication S22, Norwegian Computing Centre, Oslo, 1970.Google ScholarGoogle Scholar
  12. 12.Dewar, R.B.K., Grand, A., Liu, S-C. and Schwartz, J.T. Programming by Refinement, as Exemplified by the SETL Representation Sublanguage. ACM Trans. Programming Languages and Systems 1, 1 (July 1979), 27-49. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. 13.Feather, M.S. A System for Developing Programs by Transformation. Ph.D. Th., University of Edinburgh, 1979.Google ScholarGoogle Scholar
  14. 14.Goguen, J.A. and Burstall, R.M. CAT, a System for the Structured Elaboration of Correct Programs from Structured Specifications. In preparation.Google ScholarGoogle Scholar
  15. 15.Goguen, J.A. and Tardo, J.J. An Introduction to OBJ: A Language for Writing and Testing Formal Algebraic Program Specifications. Specifications of Reliable Software Conf. Proc., Cambridge, Massachusetts, April, 1979.Google ScholarGoogle Scholar
  16. 16.Gordon, M.J.C. The Denotational Description of Programming Languages. Springer-Verlag, 1979. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. 17.Gordon, M.J.C., Milner, A.J.R.G., Morris, L., Newey, M. and Wadsworth, C. A Metalanguage for Interactive Proof in LCF. Proc. 5th ACM Symp. on Principles of Programming Languages, Tucson, Arizona, 1978. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. 18.Henderson, P. and Morris, J. A Lazy Evaluator. Proc. 3rd ACM Symp. on Principles of Programming Languages, Atlanta, Georgia, 1976, pp. 95-103. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. 19.Henderson, P. and Snowdon, R. An Experiment in Structured Programming. BIT 12, 1 (1972), 38-53.Google ScholarGoogle Scholar
  20. 20.Ichbiah, J.D. et al. Preliminary ADA Reference Manual. SIGPLAN Notices 14, 6A (June 1979). Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. 21.Iverson, K. A Programming Language. John Wiley and Sons, 1962. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. 22.Jenks, R.D. The SCRATCHPAD Language. Proc. Symp. on Very High Level Languages, April, 1974. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. 23.Kernighan, B.W. and Plauger, P.J. Software Tools. Addison-Wesley, 1976. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. 24.Landin, P.J. The Next 700 Programming Languages. Comm. ACM 9, 3 (March 1966), 157-166. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. 25.Liskov, B., Snyder, A., Atkinson, R. and Schaffert, C. Abstraction Mechanisms in CLU. Comm. ACM 20, 8 (August 1977), 564-576. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. 26.Milne, G. and Milner, R. Concurrent Processes and Their Syntax. J. ACM 26, 2 (April 1979), 302-321. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. 27.Milner, R. A Theory of Type Polymorphism in Programming. Journal of Computer and System Sciences 17, 3 (December 1978), 348-375.Google ScholarGoogle ScholarCross RefCross Ref
  28. 28.Turner, D.A. SASL Language Manual. University of St. Andrews, 1979.Google ScholarGoogle Scholar
  29. 29.Wadsworth, C.P. Semantics and Pragmatics of the Lambda Calculus. Ph.D. Th., Programming Research Unit, Oxford University, 1971.Google ScholarGoogle Scholar
  30. 30.Warren, D.H.D, Pereira, L.M. and Pereira, F.C.N. PROLOG—The Language and Its Implementation Compared With LISP. Proc. ACM Symp. on Artificial Intelligence and Programming Languages, Rochester, New York, August, 1977. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. 31.Wulf, W.A., London, R.L. and Shaw, M. An Introduction to the Construction and Verification of Alphard Programs. IEEE Trans. on Software Eng. SE-2, 4 (December 1976), 253-265.Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. HOPE: An experimental applicative language

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in
      • Published in

        cover image ACM Conferences
        LFP '80: Proceedings of the 1980 ACM conference on LISP and functional programming
        August 1980
        247 pages
        ISBN:9781450373968
        DOI:10.1145/800087

        Copyright © 1980 ACM

        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 25 August 1980

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • Article

        Acceptance Rates

        Overall Acceptance Rate30of109submissions,28%

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader