# LambdaNative

LambdaNative is an open-source cross-platform development environment written on top of the Gambit-C Scheme implementation of the Scheme programming language, supporting the creation of native applications on a range of mobile, desktop and embedded platforms. The underlying Scheme programming language has a long tradition of use in theoretical computer science, artificial intelligence and rapid program development.

## History

The Scheme programming language was designed as a simplified and more abstract variant of the early Lisp programming language. The first Lisp implementation was available in 1958, Scheme was introduced in 1975.
Development of LambdaNative toolkit started in 2009 at the Pediatric Anesthesia Research Team (PART) in Vancouver, Canada. It was initially used as an in-house platform for a closed-loop intravenous anesthesia system. Support for mobile platforms was added as PART became engaged in global health projects in 2010. The core LambdaNative framework was open-sourced in 2013.

## Features

LambdaNative combines the possibilities of a rapid prototyping environment using Scheme and C programming languages (feature of the underlying Gambit-C implementation) with easy cross-platform software generation and a set of modules including GUI programming, fast Fourier transform and modules to access typical phone hardware components such as camera, GPS and audio.

### Licensing

LambdaNative is released under the BSD License.

### Platforms

LambdaNative supports building native applications for the following operating systems:
* Mobile: iOS, Android, BlackBerry 10
* Desktop: Windows, Mac OS X, Linux, OpenBSD
* Embedded: OpenWrt

### Scheme based development

LambdaNative applications are written in the Scheme language which can be easily mixed with C code. Scheme is a high level functional language with a very simple and expressive syntax. LambdaNative uses Gambit-C Scheme, a portable standards-compliant Scheme to C compiler.
Applications written in the framework can be either event-loop driven graphical applications or console applications, and code can be abstracted in the form of modules and plugins. LambdaNative does not require the use of an Integrated Development Environment (IDE). The build system follows the conventional configure, make, make install command format.

### Graphics and user interface

LambdaNative utilizes the OpenGL and OpenGL ES hardware accelerated graphics layer on the target platforms, and provides a full widget-based 2D graphics engine. It is also possible to render 3D scenes, and overlay a 2D user interface.
The cross-platform GUI is based on the highly portable glGUI widget toolkit.

### Audio

LambdaNative supports both playback of audio files (OGG or WAV) format, and real-time full-duplex bidirectional audio.

### Sensors

LambdaNative supports access to accelerometers, gyroscopes, GPS locators and other sensors where available on mobile devices.

## Applications built with LambdaNative

LambdaNative has been used for a diverse range of medical applications, for example the Phone Oximeter, a smartphone based low-cost pulse oximeter. The Phone Oximeter was selected as one of the ten innovations for 2015 to achieve the United Nations Millennium Development Goals to decrease maternal and child mortality.
LambdaNative-based applications have been used in clinical trials on >50,000 subjects in Canada, France, India, Uganda, Bangladesh, and South Africa, in >10 separate clinical studies.