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

24
Sigma Lisp Σλ Sam Davis Nick Alexander

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

Page 1: Sigma Lisp Σλ Sam Davis Nick Alexander. What is Sigma Lisp? ● New dialect of Lisp ● Designed to be as expressive as possible.

Sigma Lisp

ΣλSam Davis

Nick Alexander

Page 2: Sigma Lisp Σλ Sam Davis Nick Alexander. What is Sigma Lisp? ● New dialect of Lisp ● Designed to be as expressive as possible.

What is Sigma Lisp?

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

possible

Page 3: 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

Page 4: Sigma Lisp Σλ Sam Davis Nick Alexander. What is Sigma Lisp? ● New dialect of Lisp ● Designed to be as expressive as possible.

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

Page 5: Sigma Lisp Σλ Sam Davis Nick Alexander. What is Sigma Lisp? ● New dialect of Lisp ● Designed to be as expressive as possible.

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

Page 6: Sigma Lisp Σλ Sam Davis Nick Alexander. What is Sigma Lisp? ● New dialect of Lisp ● Designed to be as expressive as possible.

Project Overview: Design

● Functional Programming– Test individual components independent of state

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

Page 7: Sigma Lisp Σλ Sam Davis Nick Alexander. What is Sigma Lisp? ● New dialect of Lisp ● Designed to be as expressive as possible.

Components

● Basic Data Structs● Parser● Libraries● Memory

Management

● Sigma Structs● Scopes● Eval

Page 8: Sigma Lisp Σλ Sam Davis Nick Alexander. What is Sigma Lisp? ● New dialect of Lisp ● Designed to be as expressive as possible.

Basic Data Structs

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

● Controls interaction through interface● Foundation

Page 9: Sigma Lisp Σλ Sam Davis Nick Alexander. What is Sigma Lisp? ● New dialect of Lisp ● Designed to be as expressive as possible.
Page 10: Sigma Lisp Σλ Sam Davis Nick Alexander. What is Sigma Lisp? ● New dialect of Lisp ● Designed to be as expressive as possible.
Page 11: Sigma Lisp Σλ Sam Davis Nick Alexander. What is Sigma Lisp? ● New dialect of Lisp ● Designed to be as expressive as possible.
Page 12: Sigma Lisp Σλ Sam Davis Nick Alexander. What is Sigma Lisp? ● New dialect of Lisp ● Designed to be as expressive as possible.

Sigma Structs

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

Page 13: Sigma Lisp Σλ Sam Davis Nick Alexander. What is Sigma Lisp? ● New dialect of Lisp ● Designed to be as expressive as possible.

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

Page 14: Sigma Lisp Σλ Sam Davis Nick Alexander. What is Sigma Lisp? ● New dialect of Lisp ● Designed to be as expressive as possible.
Page 15: Sigma Lisp Σλ Sam Davis Nick Alexander. What is Sigma Lisp? ● New dialect of Lisp ● Designed to be as expressive as possible.
Page 16: Sigma Lisp Σλ Sam Davis Nick Alexander. What is Sigma Lisp? ● New dialect of Lisp ● Designed to be as expressive as possible.

Parser

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

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

Page 17: Sigma Lisp Σλ Sam Davis Nick Alexander. What is Sigma Lisp? ● New dialect of Lisp ● Designed to be as expressive as possible.

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'

Page 18: Sigma Lisp Σλ Sam Davis Nick Alexander. What is Sigma Lisp? ● New dialect of Lisp ● Designed to be as expressive as possible.

Scopes

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

● Represents the environment of variables

Page 19: Sigma Lisp Σλ Sam Davis Nick Alexander. What is Sigma Lisp? ● New dialect of Lisp ● Designed to be as expressive as possible.

Libraries

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

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

Page 20: Sigma Lisp Σλ Sam Davis Nick Alexander. What is Sigma Lisp? ● New dialect of Lisp ● Designed to be as expressive as possible.

Memory Management

● Hybrid reference counting and garbage collection

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

circular structures

Page 21: Sigma Lisp Σλ Sam Davis Nick Alexander. What is Sigma Lisp? ● New dialect of Lisp ● Designed to be as expressive as possible.
Page 22: Sigma Lisp Σλ Sam Davis Nick Alexander. What is Sigma Lisp? ● New dialect of Lisp ● Designed to be as expressive as possible.
Page 23: Sigma Lisp Σλ Sam Davis Nick Alexander. What is Sigma Lisp? ● New dialect of Lisp ● Designed to be as expressive as possible.
Page 24: Sigma Lisp Σλ Sam Davis Nick Alexander. What is Sigma Lisp? ● New dialect of Lisp ● Designed to be as expressive as possible.

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