Lecture overview -- Keyboard shortcut: 'u'  Previous page: Fine grained linguistic abstraction in Lisp -- Keyboard shortcut: 'p'  Next page: Coarse grained linguistic abstraction in Lisp -- 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 6 - Page 5 : 22
Functional Programming in Scheme
Linguistic abstraction
An example of fine grained abstraction

A fine grained implementation of a course home page language

Each of the forms in the language are implemented as a Scheme function

(course-home-page

  (name "Programming Paradigms")

  (number-of-lectures 15)

  (lecture-names
    "intr" "scheme" "higher-order-fn" 
    "eval-order" "lisp-languages")

  (current-lecture 3)

  (links
    "schemers.org" "http://www.schemers.org/"
    "LAML" "http://www.cs.auc.dk/~normark/laml/"
    "Haskell" "http://haskell.org/"
  )
)

A sample document in a course home page language. The outer 'keyword' is course-home-page . Inside a course-home-page form there may be a number of subclauses. We see a name clause, a number-of-lectures clause etc. The important point of the example is that the expression is regarded as a clause in a new language, which we somehow want to implement with the purpose of 'solving some problem' - here to generate a set of coherent web pages for some activity.

y:/Kurt/Files/courses/prog3/prog3-03/sources/notes/includes/list-language/fine-grained-ling-abstr.scmAn almost empty outline of the functions that implement the course home page language.

Each kind of subexpression is either implemented as a function or as a macro. In this simple example, macros are not used.