DavisSlides06

Download Report

Transcript DavisSlides06

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
–
●
Macros
–
●
Functions that return code
Lexical Scope
–
●
Shared notation for code and data
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
●
Sigma Structs
●
Parser
●
Scopes
●
Libraries
●
Eval
●
Memory
Management
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