Sigma Lisp Σλ Sam Davis Nick Alexander. What is Sigma Lisp? ● New dialect of Lisp ● Designed...

Post on 30-Dec-2015

230 views 1 download

Transcript of Sigma Lisp Σλ Sam Davis Nick Alexander. What is Sigma Lisp? ● New dialect of Lisp ● Designed...

Sigma Lisp

ΣλSam Davis

Nick Alexander

What is Sigma Lisp?

● New dialect of Lisp● Designed to be as expressive as

possible

Project Overview: Why Lisp?

● Lisp is a highly abstract language● S-expressions

– Shared notation for code and data● Macros

– Functions that return code● Lexical Scope

– Easy insertion of values● Dynamic Typing

Project Overview: Why Sigma?

● “Onions in the varnish”– “Features” that are products of history

● Language needs have changed– Cross-platform applications– OS interactions

● Revive the Lisp model

Project Overview: Principles

● Assume a sufficiently smart programmer● Expressive enough to use and redefine itself● Time efficiency for the programmer● Language first, implementation second● “I can't do everything myself”● Nothing is sacred

Project Overview: Design

● Functional Programming– Test individual components independent of state

● Bottom-up Design– Build from independently coded components– Link together powerful abstract tools

Components

● Basic Data Structs● Parser● Libraries● Memory

Management

● Sigma Structs● Scopes● Eval

Basic Data Structs

● Defines structures for basic manipulation and storage of data– Array– Hash

● Controls interaction through interface● Foundation

Sigma Structs

● Sigma specific structures– Object– Scope– Func– Cons– Num

Hexadecimal Type Chart

Type Hexadecimal Reference Type Hexadecimal Reference

Nil 0x0001 Func 0x0080

Sym 0x0002 Mac 0x0100

Cons 0x0004 Meth 0x0200

Num 0x0008 Cls 0x0400

Str 0x0010 Inst 0x0800

Parser

● Translates text input into Sigma object representing the S-expression

● Syntax– quote: '– backtick: `– comma: ,

Eval

● Evaluates an object returned from Parser– Symbol returns variable value– List preforms a function application– Everything else is returned

● (+ a b) -> application of function '+' to values of 'a' and 'b'

Scopes

● System for variable management– Stored in layers– Maps string to value

● Represents the environment of variables

Libraries

● Native functions written in C– Basic data manipulation– Control structures

● Predefined functions in Sigma– Higher level manipulation– Derived functions and macros

Memory Management

● Hybrid reference counting and garbage collection

● Emphasis on reference counting● Garbage collection acts as back up for

circular structures

Credits

● Nick:– Primary Coding: Basic Structs, Sigma Structs,

Debugging, Scope, Tests, Design Concepts● Sam:

– Eval, Parser, Debugging, Tests, Diagramming, Primary Research Paper Writer, Administrative Requirements