Functional Programming with MCU(s)
ARMPIT SCHEME is an interpreter for
  the Scheme language (lexically-scoped
  dialect of Lisp) that runs on RISC
  microcontrollers with ARM core. It is
  based on the description in the
  Revised Report on the Algorithmic
  Language Scheme (r5rs), with some
  extensions (for I/O) and some
  omissions (to fit within MCU memory).
  It is further designed to support
  multitasking and multiprocessing.
  Armpit Scheme is expected to be well
  suited to educational settings,
  including student projects in courses
  on control and instrumentation, or
  capstone design courses where
  microcontrollers are needed. It is
  meant to enrich the spectrum of
  interpreted languages available for
  MCUs (eg. BASIC and FORTH) and can be
  an alternative to MCU-based bytecode
  interpreters (eg. for Scheme or Java)
  and to compiled languages (eg. C).


http://armpit.sourceforge.net/

You say:


  Using C, C++, assembly, etc. is quite inefficient compared to languages like Haskell, LISP, or Scheme


Using high level languages is a more efficient use of programmer time, but can often be a less efficient use of computing resources. For embedded systems manufactured in volume, cost and performance are often higher priority than development effort.