Functional programming languages for verification tools: a comparison of Standard ML and Haskell

  • Martin LeuckerEmail author
  • Thomas Noll
  • Perdita Stevens
  • Michael Weber
Regular contribution


We compare Haskell with Standard ML as programming languages for verification tools based on our experience developing the verification platform Truth in Haskell and the Edinburgh Concurrency Workbench (CWB) in Standard ML. We review not only technical language features but also the “worlds” of the languages, for example, the availability of compilers, tools, and libraries. We also discuss the merits and difficulties of comparing programming languages in this wide sense and support our view that Truth and the CWB are similar enough to justify the conclusions drawn in this paper.


Language adequacy Functional programming languages ML Haskell Verification tools  


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Clarke EM, Wing JM (1996) Formal methods: state of the art and future directions. ACM Comput Surv 28(4):626–643CrossRefGoogle Scholar
  2. 2.
    Gansner ER, Reppy JH (2002) The Standard ML Basis Library. Cambridge University Press, Cambridge, UKGoogle Scholar
  3. 3.
    Hartel PH, Feeley M, Alt M, Augustsson L, Baumann P, Beemster M, Chailloux E, Flood CH, Grieskamp W, van Groningen JHG, Hammond K, Hausman B, Ivory MY, Jones RE, Kamperman J, Lee P, Leroy X, Lins RD, Loosemore S, Röjemo N, Serrano M, Talpin JP, Thackray J, Thomas S, Walters P, Weis P, Wentworth P (1996) Benchmarking implementations of functional languages with ‘Pseudoknot’, a float-intensive benchmark. J Function Programm 6(4):621–655CrossRefGoogle Scholar
  4. 4.
    McAdam B (2002) Repairing type errors in functional programs. PhD thesis, Division of Informatics, University of EdinburghGoogle Scholar
  5. 5.
    Milner R (1989) Communication and concurrency. International Series in Computer Science. Prentice-Hall, Upper Saddle River, NJGoogle Scholar
  6. 6.
    Milner R, Tofte M, Harper R, MacQueen D (1997) The definition of Standard ML (revised). MIT Press, Cambridge, MAGoogle Scholar
  7. 7.
    Nicklisch J, Peyton Jones SL (1996) An exploration of modular programs. In: Glasgow workshop on functional programming, July 1996Google Scholar
  8. 8.
    Peterson J, Hammond K (eds) Augustsson L, Boutel B, Burton W, Fasel J, Gordon AD, Hughes J, Hudak P, Johnsson T, Jones MP, Peyton Jones SL, Reid A, Wadler P (1996) Report on the programming language Haskell, a non-strict purely-functional programming language, version 1.3. Technical report, Yale University, New Yaven, CT, May 1996Google Scholar
  9. 9.
    Stevens P (1999) A verification tool developer’s vade mecum. Int J Softw Tools Technol Transfer 2(2):89–94CrossRefGoogle Scholar
  10. 10.
    Wadler P (1996) Lazy versus strict. ACM Comput Surv 28(2):318–320CrossRefGoogle Scholar
  11. 11.
    Wadler P (1997) How to declare an imperative. ACM Comput Surv 29(3):240–263CrossRefGoogle Scholar

Copyright information

© Springer-Verlag 2005

Authors and Affiliations

  • Martin Leucker
    • 1
    Email author
  • Thomas Noll
    • 2
  • Perdita Stevens
    • 3
  • Michael Weber
    • 2
  1. 1.Department of Computer SystemsUppsala UniversityUppsalaSweden
  2. 2.Lehrstuhl für Informatik IIRWTH AachenAachenGermany
  3. 3.School of InformaticsUniversity of EdinburghEdinburghUK

Personalised recommendations