Lecture overview -- Keyboard shortcut: 'u'  Previous page: An example of type checking -- Keyboard shortcut: 'p'  Next page: Lists [Section] -- Keyboard shortcut: 'n'  Lecture notes - all slides and notes together  slide -- Keyboard shortcut: 't'  Textbook -- Keyboard shortcut: 'v'  Help page about these notes  Alphabetic index  Course home    Lecture 2 - Page 16 : 46
Functional Programming in Scheme
Expressions, Types, and Functions
Types in functional programming languages

Before we proceed we will compare the handling of types in Scheme with the handling of types in other functional programming languages. Specifically, we compare with Haskell and ML.

Scheme is not representative for the handling of types in most contemporary functional programming languages

  • ML and Haskell

    • Uses static typing ala implicit type inference

    • Some meaningful programs cannot make their way through the type checker

    • There will be no type related surprises at run time

  • Scheme

    • Is strongly typed with late reporting of errors

    • Type errors in branches of the program, which are never executed, do not prevent program execution

    • There may be corners of the program which eventually causes type problems

Due to the handling of types, Scheme and Lisp are elastic and flexible compared with ML, Haskell, and other similar language which are quite stiff and rigid.