sigma lisp Σλ sam davis nick alexander. what is sigma lisp? ● new dialect of lisp ● designed...
Post on 30-Dec-2015
236 Views
Preview:
TRANSCRIPT
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
top related