SlideShare a Scribd company logo
1 of 28
Control structures in Lisp
Common Lisp provides with  a variety of special structures for organizing the programs.Some have to do with the flow of control. These are called as control structures. Locally defined functions(flet, labels) and macros( macrolet) are quite flexible. CL provides: ,[object Object]
the simple two-way conditionals (if)
more general multi-way conditionals( cond, case)Constructs for performing non local exits with various scoping disciplines are provided: block, return, return-from, catch and throw.
overview Constants and variables References Assignment Generalized variables Function invocation Simple sequencing Conditionals Blocks and Exits Iterations  Mapping
Constants and variables CL provides two kinds of variables: ordinary variables and function names. One of them is used to name defined function, macros, and special forms , and the other to name data objects.  The name of the ordinary variable may be obtained by simply writing the name of the variable as a form to be executed. The following functions and variables allow reference to the values of constants and variables: quote object simply returns the object function fn if fn is a symbol, the functional definition associated with that symbol is returned. If fn is a lambda-expression, then a “lexical closure” is returned.
References Symbol-value symbol returns the dynamic current value of the symbol, error occurs if the symbol has no values. Symbol-function-symbol returns the current global function definition named by the symbol, error is signaled if the symbol has no function definition. Symbol-function is applicable only for global functions its not applicable for lexical function name produced by flet or labels.
Symbol-function can be called on any function on which fbound function is true. fbound in turn returns true for symbols which define a macro or a special form. When symbol-function is used with typef, its new value must be type function. fdefinition function-name returns the current global function definition named by the argument function name.
boundp symbol returns true if the symbol  has a value, else returns false. fboundp symbol returns true if the function has global function definition Special-form-p symbol returns a non-nil value if the symbol globally names a special form, else returns nil
Assignment The following allow the value associated with the current binding of the variable to be changed. (setq var1 form1 var2 form2 ….) here first the form1 is calculated and the value is stored in val1, then form2 is calculated and stored in form2 and so on.. Setq returns the last value assigned, there must be even number of arguments forms. Ex: (setq  x (* 3 2) y (cons x nil))retains the first set value of x as 6 and returns 6. Psetq {form}* is similar to setq except that assignments happen in parallel. Ex: (setq a 4)        (setq b 6)         (psetq a b b a) a=6 and b=4, thus the values of a and b are exchanged  by using parallel assignment
Set symbol value1   allows the alteration of the dynamic variable , set allows the symbol to take value1 as its value. Ex: (set (if (eq a b) ‘c ‘d) ‘foo) sets either c to foo or d to foo depending on the outcome of the result, set returns the value as a result. makeunbound symbol causes the dynamic(special) variable named by symbol to become unbound. fmakeunbound symbol makes the analogous thing for the global function definition named by symbol.
Generalized variables The concept of the variables named by symbols can be generalized to any storage location that can remember one piece of data. Ex of such storage locations are the car and cdr of cons. Basic operations on variables are: access and update operations. The following table give the various access and update functions:
Setf is a macro that that examines an access form and produces a call to corresponding update function. Setf {place new-value}* takes a form place that when evaluated accesses a data object in some location and “inverts” it to produce a corresponding form to update the location. If more than one place-newvalue pair is specified, the pairs are processed sequentially; that is (setf place1 newvalue1,              place2 newvalue2,             ……              placen newvaluen)
Rotatef{place}* each place form may be any form acceptable as a generalized variable to setf. In the form (rotatef place1,place2,...placen) the values of place1 to placen are being accessed and saved. It is as if all the places from an end-round shift register that is rotated one place to the left, with the value of place1 being shifted around to the end to placen.  (setf place1 value1 place2 value2…) the subforms of place1 and value1 are evaluated, the location specified by place1 is modified to contain the value returned by value1, and then the rest of setf form is processed in a like manner.
Function invocation Any list that has no other interpretation to as a macro call or special form is taken to be a function call. This applies function to a list of arguments. The arguments of the function consists of the last arguments to apply appended to the end of the list of all the other arguments to apply but the function itself. Ex:  (setf  a ‘*)  (apply a ‘( 3 2))6 If the function takes keyword arguments , the keywords as well as the corresponding values must appear in the argument list. Ex: (apply # ‘(lamda (&key a b) (list a b)) ‘(:b 3))(nil 3) apply function arg &rest more-args
(funcall fn a1,a2,a3……an) applies the function fn to arguments a1,a2,….an Ex: (cons 2 3)( 2 . 3 )     (setq cons  (symbol-function ‘+)#<Function +>        (funcall cons 2 3) 5 funcall fn &rest arguments
Simple sequencing These constructs simply evaluate all the argument forms in order.  progn {form}*  progn construct takes a number of forms and evaluates them sequentially  in order from left to right. The values of all forms but the last are discarded, whatever the last form evaluates is returned as the result.  prog1 first {form}*  is similar to progn but it returns the value of its first form. prog2 first second {form}* is similar to prog1, but it returns the value of the second form.  prog2 ( a b c d…….) is similar to (prog a( prog1 b c…..z))
conditionals The traditional conditional construct in lisp is cond. CL also produces the dispatching constructs case and typecase. If test then [else] first the form is evaluated. If the result is not nil, then the form is selected. (If test then else) is similar to (cond (test then) (t else)) (when test form1 form2…)first evaluates test.  If the result is nil, then no form is evaluated, and nil is returned. Otherwise the forms constitute an implicit progn and are evaluated sequentially from left to right, and the value of the last one is returned .
(unless test form1 form2….) first evaluates test. If the result is not nil, then the forms are not evaluated, and nill is returned. Otherwise the form constitutes an implicit progn and are evaluated sequentially from left to right, and the value of the last one is returned. (cond (p…)                (q…)                 (r…)      ………                 (t…)) Is similar to if p then…                          else if q then….                          else if r then…..                          …..                          else……
typecase keyform  {(type {form}* )}* typecase is a conditional that chooses one of it clauses by examining the type of an object. Its form is as follows: (typecase keyform        (type-1 consequent-1-1 consequent-1-2…..)        (type-2 consequent-2-1  …..)        (type-3 consequent-3-1 ….)         ….. )
Blocks and exits The block and return-form constructs provide a structured lexical non-local exit facility. block name {form}* the block construct executes each form from left to right, returning whatever is returned by the last form.
return-from name [result] return-from is used to return from a block or from such constraints as do and prog that implicitly establish a block. The name is not evaluated and must be a symbol. The evaluation of result produces multiple values, those multiple values are returned by the construct exited. return [result] (return form) is identical in meaning  to (return-from nil form) It returns from a block named nil.
Iteration Loop construct provides a trivial iteration facility. It controls no variables, and simply executed its body repeatedly. loop {form}* each form is evaluated from left to right, when the last form has been evaluated, then the first form is evaluated again, and so on in a never ending cycle. Its execution must be terminated explicitly, using return or throw.
Do and do* Macro syntax: do ({var [init [step]])}*)     (end-test {result}*)    {declaration}* {tag|statement}* do* ({var [init [step]])}*)      (end-test {result}*)     {declaration}* {tag|statement}*  The do special form provides a generalized iteration facility, with an arbitrary number of “index variables”.
Do form looks like this (do ((var1 init1 step1)         (var1 init1 step1)       ……. (var1 init1 step1)       (end-test . result)     {declaration}*           .tagbody)  The do* looks exactly the same except that the name do is replaced by do*.
Mapping Mapping is type of iteration in which a function is successively applied to pieces of one or more sequences. The result of the iteration is a sequence containing the respective results of the function applications. The function map may be used to map over any kind of sequence.
The following functions operate only on lists: mapcar function list &rest more-lists maplist function list &rest more-lists mapcfunction list &rest more-lists mapl function list &rest more-lists mapcan function list &rest more-lists mapcon function list &rest more-lists
mapcar function list &rest more-lists ,[object Object]

More Related Content

What's hot (20)

linked list in data structure
linked list in data structure linked list in data structure
linked list in data structure
 
Team 2
Team 2Team 2
Team 2
 
Snmp
SnmpSnmp
Snmp
 
Singly & Circular Linked list
Singly & Circular Linked listSingly & Circular Linked list
Singly & Circular Linked list
 
Operators used in vb.net
Operators used in vb.netOperators used in vb.net
Operators used in vb.net
 
2_2Specification of Tokens.ppt
2_2Specification of Tokens.ppt2_2Specification of Tokens.ppt
2_2Specification of Tokens.ppt
 
Android activity lifecycle
Android activity lifecycleAndroid activity lifecycle
Android activity lifecycle
 
Data structures using c
Data structures using cData structures using c
Data structures using c
 
Command line arguments
Command line argumentsCommand line arguments
Command line arguments
 
Data Structures with C Linked List
Data Structures with C Linked ListData Structures with C Linked List
Data Structures with C Linked List
 
Linked stacks and queues
Linked stacks and queuesLinked stacks and queues
Linked stacks and queues
 
Linked List
Linked ListLinked List
Linked List
 
Pointers in c++
Pointers in c++Pointers in c++
Pointers in c++
 
File Types in Data Structure
File Types in Data StructureFile Types in Data Structure
File Types in Data Structure
 
Implementation of Pipe in Linux
Implementation of Pipe in LinuxImplementation of Pipe in Linux
Implementation of Pipe in Linux
 
Abstract data types
Abstract data typesAbstract data types
Abstract data types
 
DATA STRUCTURES
DATA STRUCTURESDATA STRUCTURES
DATA STRUCTURES
 
Polymorphism
PolymorphismPolymorphism
Polymorphism
 
Tree in data structure
Tree in data structureTree in data structure
Tree in data structure
 
Stack data structure
Stack data structureStack data structure
Stack data structure
 

Viewers also liked

LISP: Control Structures In Lisp
LISP: Control Structures In LispLISP: Control Structures In Lisp
LISP: Control Structures In LispLISP Content
 
Gentle Introduction To Lisp
Gentle Introduction To LispGentle Introduction To Lisp
Gentle Introduction To LispDamien Garaud
 
LISP Programming Language (Artificial Intelligence)
LISP Programming Language (Artificial Intelligence)LISP Programming Language (Artificial Intelligence)
LISP Programming Language (Artificial Intelligence)wahab khan
 
Lisp Programming Languge
Lisp Programming LangugeLisp Programming Languge
Lisp Programming LangugeYaser Jaradeh
 
Redesigning Common Lisp
Redesigning Common LispRedesigning Common Lisp
Redesigning Common Lispfukamachi
 
Learn a language : LISP
Learn a language : LISPLearn a language : LISP
Learn a language : LISPDevnology
 
A brief introduction to lisp language
A brief introduction to lisp languageA brief introduction to lisp language
A brief introduction to lisp languageDavid Gu
 
Introduction To Lisp
Introduction To LispIntroduction To Lisp
Introduction To Lispkyleburton
 
Expert systems
Expert systemsExpert systems
Expert systemsJithin Zcs
 
Application of expert system
Application of expert systemApplication of expert system
Application of expert systemDinkar DP
 
Introduction and architecture of expert system
Introduction  and architecture of expert systemIntroduction  and architecture of expert system
Introduction and architecture of expert systempremdeshmane
 

Viewers also liked (20)

LISP: Control Structures In Lisp
LISP: Control Structures In LispLISP: Control Structures In Lisp
LISP: Control Structures In Lisp
 
LISP:Program structure in lisp
LISP:Program structure in lispLISP:Program structure in lisp
LISP:Program structure in lisp
 
LISP: Introduction to lisp
LISP: Introduction to lispLISP: Introduction to lisp
LISP: Introduction to lisp
 
Gentle Introduction To Lisp
Gentle Introduction To LispGentle Introduction To Lisp
Gentle Introduction To Lisp
 
Lisp
LispLisp
Lisp
 
LISP Programming Language (Artificial Intelligence)
LISP Programming Language (Artificial Intelligence)LISP Programming Language (Artificial Intelligence)
LISP Programming Language (Artificial Intelligence)
 
Lisp Programming Languge
Lisp Programming LangugeLisp Programming Languge
Lisp Programming Languge
 
Redesigning Common Lisp
Redesigning Common LispRedesigning Common Lisp
Redesigning Common Lisp
 
Learn a language : LISP
Learn a language : LISPLearn a language : LISP
Learn a language : LISP
 
A brief introduction to lisp language
A brief introduction to lisp languageA brief introduction to lisp language
A brief introduction to lisp language
 
Lisp
LispLisp
Lisp
 
Introduction To Lisp
Introduction To LispIntroduction To Lisp
Introduction To Lisp
 
Expert systems
Expert systemsExpert systems
Expert systems
 
Application of expert system
Application of expert systemApplication of expert system
Application of expert system
 
Introduction and architecture of expert system
Introduction  and architecture of expert systemIntroduction  and architecture of expert system
Introduction and architecture of expert system
 
Prolog & lisp
Prolog & lispProlog & lisp
Prolog & lisp
 
LISP: Scope and extent in lisp
LISP: Scope and extent in lispLISP: Scope and extent in lisp
LISP: Scope and extent in lisp
 
LISP: Macros in lisp
LISP: Macros in lispLISP: Macros in lisp
LISP: Macros in lisp
 
Data Applied: Association
Data Applied: AssociationData Applied: Association
Data Applied: Association
 
Mphone
MphoneMphone
Mphone
 

Similar to Control flow and data structures in Common Lisp

LISP: Loops In Lisp
LISP: Loops In LispLISP: Loops In Lisp
LISP: Loops In LispLISP Content
 
TI1220 Lecture 6: First-class Functions
TI1220 Lecture 6: First-class FunctionsTI1220 Lecture 6: First-class Functions
TI1220 Lecture 6: First-class FunctionsEelco Visser
 
LISP: Program structure in lisp
LISP: Program structure in lispLISP: Program structure in lisp
LISP: Program structure in lispLISP Content
 
Presentatioon on type conversion and escape characters
Presentatioon on type conversion and escape charactersPresentatioon on type conversion and escape characters
Presentatioon on type conversion and escape charactersfaala
 
LISP: Macros in lisp
LISP: Macros in lispLISP: Macros in lisp
LISP: Macros in lispLISP Content
 
Functions in C++
Functions in C++Functions in C++
Functions in C++home
 
Functional programming with clojure
Functional programming with clojureFunctional programming with clojure
Functional programming with clojureLucy Fang
 
java write a program to evaluate the postfix expressionthe program.pdf
java write a program to evaluate the postfix expressionthe program.pdfjava write a program to evaluate the postfix expressionthe program.pdf
java write a program to evaluate the postfix expressionthe program.pdfarjuntelecom26
 
The Ring programming language version 1.5.2 book - Part 31 of 181
The Ring programming language version 1.5.2 book - Part 31 of 181The Ring programming language version 1.5.2 book - Part 31 of 181
The Ring programming language version 1.5.2 book - Part 31 of 181Mahmoud Samir Fayed
 
User defined function in C.pptx
User defined function in C.pptxUser defined function in C.pptx
User defined function in C.pptxRhishav Poudyal
 
Python programming: Anonymous functions, String operations
Python programming: Anonymous functions, String operationsPython programming: Anonymous functions, String operations
Python programming: Anonymous functions, String operationsMegha V
 
Functions in C++
Functions in C++Functions in C++
Functions in C++home
 

Similar to Control flow and data structures in Common Lisp (20)

LISP:Loops In Lisp
LISP:Loops In LispLISP:Loops In Lisp
LISP:Loops In Lisp
 
LISP: Loops In Lisp
LISP: Loops In LispLISP: Loops In Lisp
LISP: Loops In Lisp
 
TI1220 Lecture 6: First-class Functions
TI1220 Lecture 6: First-class FunctionsTI1220 Lecture 6: First-class Functions
TI1220 Lecture 6: First-class Functions
 
LISP: Program structure in lisp
LISP: Program structure in lispLISP: Program structure in lisp
LISP: Program structure in lisp
 
Functions & Recursion
Functions & RecursionFunctions & Recursion
Functions & Recursion
 
Presentatioon on type conversion and escape characters
Presentatioon on type conversion and escape charactersPresentatioon on type conversion and escape characters
Presentatioon on type conversion and escape characters
 
LISP: Macros in lisp
LISP: Macros in lispLISP: Macros in lisp
LISP: Macros in lisp
 
Functions in C++
Functions in C++Functions in C++
Functions in C++
 
Functional programming with clojure
Functional programming with clojureFunctional programming with clojure
Functional programming with clojure
 
java write a program to evaluate the postfix expressionthe program.pdf
java write a program to evaluate the postfix expressionthe program.pdfjava write a program to evaluate the postfix expressionthe program.pdf
java write a program to evaluate the postfix expressionthe program.pdf
 
C++ quik notes
C++ quik notesC++ quik notes
C++ quik notes
 
C and C++ functions
C and C++ functionsC and C++ functions
C and C++ functions
 
Functions
FunctionsFunctions
Functions
 
functions
functionsfunctions
functions
 
The Ring programming language version 1.5.2 book - Part 31 of 181
The Ring programming language version 1.5.2 book - Part 31 of 181The Ring programming language version 1.5.2 book - Part 31 of 181
The Ring programming language version 1.5.2 book - Part 31 of 181
 
User defined function in C.pptx
User defined function in C.pptxUser defined function in C.pptx
User defined function in C.pptx
 
Functions
FunctionsFunctions
Functions
 
Evaluating function 1
Evaluating function 1Evaluating function 1
Evaluating function 1
 
Python programming: Anonymous functions, String operations
Python programming: Anonymous functions, String operationsPython programming: Anonymous functions, String operations
Python programming: Anonymous functions, String operations
 
Functions in C++
Functions in C++Functions in C++
Functions in C++
 

More from DataminingTools Inc

AI: Introduction to artificial intelligence
AI: Introduction to artificial intelligenceAI: Introduction to artificial intelligence
AI: Introduction to artificial intelligenceDataminingTools Inc
 
Data Mining: Text and web mining
Data Mining: Text and web miningData Mining: Text and web mining
Data Mining: Text and web miningDataminingTools Inc
 
Data Mining: Mining stream time series and sequence data
Data Mining: Mining stream time series and sequence dataData Mining: Mining stream time series and sequence data
Data Mining: Mining stream time series and sequence dataDataminingTools Inc
 
Data Mining: Mining ,associations, and correlations
Data Mining: Mining ,associations, and correlationsData Mining: Mining ,associations, and correlations
Data Mining: Mining ,associations, and correlationsDataminingTools Inc
 
Data Mining: Graph mining and social network analysis
Data Mining: Graph mining and social network analysisData Mining: Graph mining and social network analysis
Data Mining: Graph mining and social network analysisDataminingTools Inc
 
Data warehouse and olap technology
Data warehouse and olap technologyData warehouse and olap technology
Data warehouse and olap technologyDataminingTools Inc
 

More from DataminingTools Inc (20)

Terminology Machine Learning
Terminology Machine LearningTerminology Machine Learning
Terminology Machine Learning
 
Techniques Machine Learning
Techniques Machine LearningTechniques Machine Learning
Techniques Machine Learning
 
Machine learning Introduction
Machine learning IntroductionMachine learning Introduction
Machine learning Introduction
 
Areas of machine leanring
Areas of machine leanringAreas of machine leanring
Areas of machine leanring
 
AI: Planning and AI
AI: Planning and AIAI: Planning and AI
AI: Planning and AI
 
AI: Logic in AI 2
AI: Logic in AI 2AI: Logic in AI 2
AI: Logic in AI 2
 
AI: Logic in AI
AI: Logic in AIAI: Logic in AI
AI: Logic in AI
 
AI: Learning in AI 2
AI: Learning in AI 2AI: Learning in AI 2
AI: Learning in AI 2
 
AI: Learning in AI
AI: Learning in AI AI: Learning in AI
AI: Learning in AI
 
AI: Introduction to artificial intelligence
AI: Introduction to artificial intelligenceAI: Introduction to artificial intelligence
AI: Introduction to artificial intelligence
 
AI: Belief Networks
AI: Belief NetworksAI: Belief Networks
AI: Belief Networks
 
AI: AI & Searching
AI: AI & SearchingAI: AI & Searching
AI: AI & Searching
 
AI: AI & Problem Solving
AI: AI & Problem SolvingAI: AI & Problem Solving
AI: AI & Problem Solving
 
Data Mining: Text and web mining
Data Mining: Text and web miningData Mining: Text and web mining
Data Mining: Text and web mining
 
Data Mining: Outlier analysis
Data Mining: Outlier analysisData Mining: Outlier analysis
Data Mining: Outlier analysis
 
Data Mining: Mining stream time series and sequence data
Data Mining: Mining stream time series and sequence dataData Mining: Mining stream time series and sequence data
Data Mining: Mining stream time series and sequence data
 
Data Mining: Mining ,associations, and correlations
Data Mining: Mining ,associations, and correlationsData Mining: Mining ,associations, and correlations
Data Mining: Mining ,associations, and correlations
 
Data Mining: Graph mining and social network analysis
Data Mining: Graph mining and social network analysisData Mining: Graph mining and social network analysis
Data Mining: Graph mining and social network analysis
 
Data warehouse and olap technology
Data warehouse and olap technologyData warehouse and olap technology
Data warehouse and olap technology
 
Data Mining: Data processing
Data Mining: Data processingData Mining: Data processing
Data Mining: Data processing
 

Recently uploaded

Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsAndrey Dotsenko
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 

Recently uploaded (20)

Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 

Control flow and data structures in Common Lisp

  • 2.
  • 3. the simple two-way conditionals (if)
  • 4. more general multi-way conditionals( cond, case)Constructs for performing non local exits with various scoping disciplines are provided: block, return, return-from, catch and throw.
  • 5. overview Constants and variables References Assignment Generalized variables Function invocation Simple sequencing Conditionals Blocks and Exits Iterations Mapping
  • 6. Constants and variables CL provides two kinds of variables: ordinary variables and function names. One of them is used to name defined function, macros, and special forms , and the other to name data objects. The name of the ordinary variable may be obtained by simply writing the name of the variable as a form to be executed. The following functions and variables allow reference to the values of constants and variables: quote object simply returns the object function fn if fn is a symbol, the functional definition associated with that symbol is returned. If fn is a lambda-expression, then a “lexical closure” is returned.
  • 7. References Symbol-value symbol returns the dynamic current value of the symbol, error occurs if the symbol has no values. Symbol-function-symbol returns the current global function definition named by the symbol, error is signaled if the symbol has no function definition. Symbol-function is applicable only for global functions its not applicable for lexical function name produced by flet or labels.
  • 8. Symbol-function can be called on any function on which fbound function is true. fbound in turn returns true for symbols which define a macro or a special form. When symbol-function is used with typef, its new value must be type function. fdefinition function-name returns the current global function definition named by the argument function name.
  • 9. boundp symbol returns true if the symbol has a value, else returns false. fboundp symbol returns true if the function has global function definition Special-form-p symbol returns a non-nil value if the symbol globally names a special form, else returns nil
  • 10. Assignment The following allow the value associated with the current binding of the variable to be changed. (setq var1 form1 var2 form2 ….) here first the form1 is calculated and the value is stored in val1, then form2 is calculated and stored in form2 and so on.. Setq returns the last value assigned, there must be even number of arguments forms. Ex: (setq x (* 3 2) y (cons x nil))retains the first set value of x as 6 and returns 6. Psetq {form}* is similar to setq except that assignments happen in parallel. Ex: (setq a 4) (setq b 6) (psetq a b b a) a=6 and b=4, thus the values of a and b are exchanged by using parallel assignment
  • 11. Set symbol value1  allows the alteration of the dynamic variable , set allows the symbol to take value1 as its value. Ex: (set (if (eq a b) ‘c ‘d) ‘foo) sets either c to foo or d to foo depending on the outcome of the result, set returns the value as a result. makeunbound symbol causes the dynamic(special) variable named by symbol to become unbound. fmakeunbound symbol makes the analogous thing for the global function definition named by symbol.
  • 12. Generalized variables The concept of the variables named by symbols can be generalized to any storage location that can remember one piece of data. Ex of such storage locations are the car and cdr of cons. Basic operations on variables are: access and update operations. The following table give the various access and update functions:
  • 13. Setf is a macro that that examines an access form and produces a call to corresponding update function. Setf {place new-value}* takes a form place that when evaluated accesses a data object in some location and “inverts” it to produce a corresponding form to update the location. If more than one place-newvalue pair is specified, the pairs are processed sequentially; that is (setf place1 newvalue1, place2 newvalue2, …… placen newvaluen)
  • 14. Rotatef{place}* each place form may be any form acceptable as a generalized variable to setf. In the form (rotatef place1,place2,...placen) the values of place1 to placen are being accessed and saved. It is as if all the places from an end-round shift register that is rotated one place to the left, with the value of place1 being shifted around to the end to placen. (setf place1 value1 place2 value2…) the subforms of place1 and value1 are evaluated, the location specified by place1 is modified to contain the value returned by value1, and then the rest of setf form is processed in a like manner.
  • 15. Function invocation Any list that has no other interpretation to as a macro call or special form is taken to be a function call. This applies function to a list of arguments. The arguments of the function consists of the last arguments to apply appended to the end of the list of all the other arguments to apply but the function itself. Ex: (setf a ‘*) (apply a ‘( 3 2))6 If the function takes keyword arguments , the keywords as well as the corresponding values must appear in the argument list. Ex: (apply # ‘(lamda (&key a b) (list a b)) ‘(:b 3))(nil 3) apply function arg &rest more-args
  • 16. (funcall fn a1,a2,a3……an) applies the function fn to arguments a1,a2,….an Ex: (cons 2 3)( 2 . 3 ) (setq cons (symbol-function ‘+)#<Function +> (funcall cons 2 3) 5 funcall fn &rest arguments
  • 17. Simple sequencing These constructs simply evaluate all the argument forms in order. progn {form}*  progn construct takes a number of forms and evaluates them sequentially in order from left to right. The values of all forms but the last are discarded, whatever the last form evaluates is returned as the result. prog1 first {form}*  is similar to progn but it returns the value of its first form. prog2 first second {form}* is similar to prog1, but it returns the value of the second form. prog2 ( a b c d…….) is similar to (prog a( prog1 b c…..z))
  • 18. conditionals The traditional conditional construct in lisp is cond. CL also produces the dispatching constructs case and typecase. If test then [else] first the form is evaluated. If the result is not nil, then the form is selected. (If test then else) is similar to (cond (test then) (t else)) (when test form1 form2…)first evaluates test. If the result is nil, then no form is evaluated, and nil is returned. Otherwise the forms constitute an implicit progn and are evaluated sequentially from left to right, and the value of the last one is returned .
  • 19. (unless test form1 form2….) first evaluates test. If the result is not nil, then the forms are not evaluated, and nill is returned. Otherwise the form constitutes an implicit progn and are evaluated sequentially from left to right, and the value of the last one is returned. (cond (p…) (q…) (r…) ……… (t…)) Is similar to if p then… else if q then…. else if r then….. ….. else……
  • 20. typecase keyform {(type {form}* )}* typecase is a conditional that chooses one of it clauses by examining the type of an object. Its form is as follows: (typecase keyform (type-1 consequent-1-1 consequent-1-2…..) (type-2 consequent-2-1 …..) (type-3 consequent-3-1 ….) ….. )
  • 21. Blocks and exits The block and return-form constructs provide a structured lexical non-local exit facility. block name {form}* the block construct executes each form from left to right, returning whatever is returned by the last form.
  • 22. return-from name [result] return-from is used to return from a block or from such constraints as do and prog that implicitly establish a block. The name is not evaluated and must be a symbol. The evaluation of result produces multiple values, those multiple values are returned by the construct exited. return [result] (return form) is identical in meaning to (return-from nil form) It returns from a block named nil.
  • 23. Iteration Loop construct provides a trivial iteration facility. It controls no variables, and simply executed its body repeatedly. loop {form}* each form is evaluated from left to right, when the last form has been evaluated, then the first form is evaluated again, and so on in a never ending cycle. Its execution must be terminated explicitly, using return or throw.
  • 24. Do and do* Macro syntax: do ({var [init [step]])}*) (end-test {result}*) {declaration}* {tag|statement}* do* ({var [init [step]])}*) (end-test {result}*) {declaration}* {tag|statement}*  The do special form provides a generalized iteration facility, with an arbitrary number of “index variables”.
  • 25. Do form looks like this (do ((var1 init1 step1) (var1 init1 step1) ……. (var1 init1 step1) (end-test . result) {declaration}* .tagbody)  The do* looks exactly the same except that the name do is replaced by do*.
  • 26. Mapping Mapping is type of iteration in which a function is successively applied to pieces of one or more sequences. The result of the iteration is a sequence containing the respective results of the function applications. The function map may be used to map over any kind of sequence.
  • 27. The following functions operate only on lists: mapcar function list &rest more-lists maplist function list &rest more-lists mapcfunction list &rest more-lists mapl function list &rest more-lists mapcan function list &rest more-lists mapcon function list &rest more-lists
  • 28.
  • 29. The value returned by the mapcar is a list of the results of the successive calls to the function.Ex: (mapcar #’abs ‘(3 -4 2 -5 -6))(3 4 2 5 6) (mapcar #’ cons ‘(a b c) ‘(1 2 3))((a.1) (b.2) (c.3))
  • 30.
  • 31. Visit more self help tutorials Pick a tutorial of your choice and browse through it at your own pace. The tutorials section is free, self-guiding and will not involve any additional support. Visit us at www.dataminingtools.net