240 likes | 261 Views
Learn about Sigma Lisp, a new dialect of Lisp that aims to be as expressive as possible, incorporating features from the history of Lisp while addressing the changing needs of modern cross-platform applications. Discover the principles and design of Sigma Lisp, including its functional programming approach, powerful abstract tools, and memory management techniques. Explore the Sigma structs, scopes, eval components, basic data structs, parser, libraries, and memory management system.
E N D
Σλ Sam DavisNick Alexander Sigma Lisp
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
Sigma Structs Scopes Eval Components • Basic Data Structs • Parser • Libraries • 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
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