SlideShare a Scribd company logo
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: simple one-way conditionals (when and unless.)
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.
overviewConstants and variablesReferencesAssignmentGeneralized variablesFunction invocationSimple sequencingConditionalsBlocks and ExitsIterations Mapping
Constants and variablesCL 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 objectfunction 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.
ReferencesSymbol-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 definitionSpecial-form-p symbol returns a non-nil value if the symbol globally names a special form, else returns nil
AssignmentThe 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 variablesThe 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 invocationAny 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))6If 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,….anEx: (cons 2 3)( 2 . 3 )    (setq cons  (symbol-function ‘+)#<Function +>       (funcall cons 2 3) 5funcall fn &rest arguments
Simple sequencingThese 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))
conditionalsThe 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 exitsThe 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.
IterationLoop 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*.
MappingMapping 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-listsmaplist function list &rest more-listsmapcfunction list &rest more-listsmapl function list &rest more-listsmapcan function list &rest more-listsmapcon function list &rest more-lists
mapcar function list &rest more-listsmapcar operates on successive elements of lists, first the function is applied to the function of each list, then to the cadr of each list, and so on.

More Related Content

PPTX
LISP:Control Structures In Lisp
DataminingTools Inc
 
PPTX
LISP:Program structure in lisp
DataminingTools Inc
 
DOCX
C UNIT-2 PREPARED Y M V BRAHMANANDA REDDY
Rajeshkumar Reddy
 
PPT
12 white box testing-fixed
Jasmine Tulin
 
PPTX
Ppt on java basics1
Mavoori Soshmitha
 
PPTX
functions
Itishree Soni
 
PPTX
User defined Functions in MATLAB Part 1
Shameer Ahmed Koya
 
PPTX
User Defined Functions in MATLAB part 2
Shameer Ahmed Koya
 
LISP:Control Structures In Lisp
DataminingTools Inc
 
LISP:Program structure in lisp
DataminingTools Inc
 
C UNIT-2 PREPARED Y M V BRAHMANANDA REDDY
Rajeshkumar Reddy
 
12 white box testing-fixed
Jasmine Tulin
 
Ppt on java basics1
Mavoori Soshmitha
 
functions
Itishree Soni
 
User defined Functions in MATLAB Part 1
Shameer Ahmed Koya
 
User Defined Functions in MATLAB part 2
Shameer Ahmed Koya
 

What's hot (20)

PPTX
Matlab Programming Tips Part 1
Shameer Ahmed Koya
 
PPT
Csc1100 lecture04 ch04
IIUM
 
PPTX
Anonymous and Inline Functions in MATLAB
Shameer Ahmed Koya
 
PPTX
User Defined Functions in MATLAB Part-4
Shameer Ahmed Koya
 
PPTX
Unit 7. Functions
Ashim Lamichhane
 
PDF
Storage classes arrays & functions in C Language
Jenish Bhavsar
 
PPT
Csc1100 lecture06 ch06_pt1
IIUM
 
PDF
Java 8
Sheeban Singaram
 
PDF
Functions in c mrs.sowmya jyothi
Sowmya Jyothi
 
PDF
Triggers in plsql
Arun Sial
 
PPTX
Working with functions in matlab
harman kaur
 
PPTX
Bsc cs pic u-3 handling input output and control statements
Rai University
 
PPTX
C language presentation
bainspreet
 
PDF
PLSQL CURSOR
Arun Sial
 
DOC
Storage classess of C progamming
Appili Vamsi Krishna
 
PPT
SQL / PL
srijanani2030
 
PDF
Functional programing in Javascript (lite intro)
Nikos Kalogridis
 
PDF
Some basic FP concepts
Falko Riemenschneider
 
PPT
Functions in c
SunithaVesalpu
 
PPTX
Recursive Function
Harsh Pathak
 
Matlab Programming Tips Part 1
Shameer Ahmed Koya
 
Csc1100 lecture04 ch04
IIUM
 
Anonymous and Inline Functions in MATLAB
Shameer Ahmed Koya
 
User Defined Functions in MATLAB Part-4
Shameer Ahmed Koya
 
Unit 7. Functions
Ashim Lamichhane
 
Storage classes arrays & functions in C Language
Jenish Bhavsar
 
Csc1100 lecture06 ch06_pt1
IIUM
 
Functions in c mrs.sowmya jyothi
Sowmya Jyothi
 
Triggers in plsql
Arun Sial
 
Working with functions in matlab
harman kaur
 
Bsc cs pic u-3 handling input output and control statements
Rai University
 
C language presentation
bainspreet
 
PLSQL CURSOR
Arun Sial
 
Storage classess of C progamming
Appili Vamsi Krishna
 
SQL / PL
srijanani2030
 
Functional programing in Javascript (lite intro)
Nikos Kalogridis
 
Some basic FP concepts
Falko Riemenschneider
 
Functions in c
SunithaVesalpu
 
Recursive Function
Harsh Pathak
 
Ad

Similar to LISP: Control Structures In Lisp (20)

PPTX
LISP:Loops In Lisp
DataminingTools Inc
 
PPTX
LISP: Loops In Lisp
LISP Content
 
PDF
TI1220 Lecture 6: First-class Functions
Eelco Visser
 
PPTX
LISP: Program structure in lisp
LISP Content
 
PPTX
Functions & Recursion
Nishant Munjal
 
PPTX
Presentatioon on type conversion and escape characters
faala
 
PDF
js_class_notes_for_ institute it is very useful for your study.pdf
Well82
 
PPTX
LISP: Macros in lisp
LISP Content
 
PPTX
LISP: Macros in lisp
DataminingTools Inc
 
PPTX
Functions in C++
home
 
PPTX
advance algebra PPT Chapter 2 algebra alg
HannaniahJimanga3
 
PDF
Functional programming with clojure
Lucy Fang
 
PDF
java write a program to evaluate the postfix expressionthe program.pdf
arjuntelecom26
 
PPSX
C++ quik notes
argusacademy
 
PPTX
C and C++ functions
kavitha muneeshwaran
 
DOC
Functions
zeeshan841
 
PPTX
functions
Makwana Bhavesh
 
PDF
The Ring programming language version 1.5.2 book - Part 31 of 181
Mahmoud Samir Fayed
 
PPTX
User defined function in C.pptx
Rhishav Poudyal
 
PDF
Functions
Pragnavi Erva
 
LISP:Loops In Lisp
DataminingTools Inc
 
LISP: Loops In Lisp
LISP Content
 
TI1220 Lecture 6: First-class Functions
Eelco Visser
 
LISP: Program structure in lisp
LISP Content
 
Functions & Recursion
Nishant Munjal
 
Presentatioon on type conversion and escape characters
faala
 
js_class_notes_for_ institute it is very useful for your study.pdf
Well82
 
LISP: Macros in lisp
LISP Content
 
LISP: Macros in lisp
DataminingTools Inc
 
Functions in C++
home
 
advance algebra PPT Chapter 2 algebra alg
HannaniahJimanga3
 
Functional programming with clojure
Lucy Fang
 
java write a program to evaluate the postfix expressionthe program.pdf
arjuntelecom26
 
C++ quik notes
argusacademy
 
C and C++ functions
kavitha muneeshwaran
 
Functions
zeeshan841
 
functions
Makwana Bhavesh
 
The Ring programming language version 1.5.2 book - Part 31 of 181
Mahmoud Samir Fayed
 
User defined function in C.pptx
Rhishav Poudyal
 
Functions
Pragnavi Erva
 
Ad

More from LISP Content (10)

PPTX
LISP:Declarations In Lisp
LISP Content
 
PPTX
LISP: Errors In Lisp
LISP Content
 
PPTX
LISP: Input And Output
LISP Content
 
PPTX
LISP: Object Sytstem Lisp
LISP Content
 
PPTX
LISP: Type specifiers in lisp
LISP Content
 
PPTX
LISP: Symbols and packages in lisp
LISP Content
 
PPTX
LISP: Scope and extent in lisp
LISP Content
 
PPTX
LISP: Predicates in lisp
LISP Content
 
PPTX
LISP: Data types in lisp
LISP Content
 
PPTX
LISP: Introduction To Lisp
LISP Content
 
LISP:Declarations In Lisp
LISP Content
 
LISP: Errors In Lisp
LISP Content
 
LISP: Input And Output
LISP Content
 
LISP: Object Sytstem Lisp
LISP Content
 
LISP: Type specifiers in lisp
LISP Content
 
LISP: Symbols and packages in lisp
LISP Content
 
LISP: Scope and extent in lisp
LISP Content
 
LISP: Predicates in lisp
LISP Content
 
LISP: Data types in lisp
LISP Content
 
LISP: Introduction To Lisp
LISP Content
 

Recently uploaded (20)

PDF
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
PPTX
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
Francisco Vieira Júnior
 
PDF
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
PDF
Event Presentation Google Cloud Next Extended 2025
minhtrietgect
 
PDF
Revolutionize Operations with Intelligent IoT Monitoring and Control
Rejig Digital
 
PDF
Why Your AI & Cybersecurity Hiring Still Misses the Mark in 2025
Virtual Employee Pvt. Ltd.
 
PDF
Doc9.....................................
SofiaCollazos
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PDF
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
PPT
L2 Rules of Netiquette in Empowerment technology
Archibal2
 
PDF
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
PPTX
Coupa-Overview _Assumptions presentation
annapureddyn
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
PDF
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 
PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PDF
Cloud-Migration-Best-Practices-A-Practical-Guide-to-AWS-Azure-and-Google-Clou...
Artjoker Software Development Company
 
PDF
REPORT: Heating appliances market in Poland 2024
SPIUG
 
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
Francisco Vieira Júnior
 
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
Event Presentation Google Cloud Next Extended 2025
minhtrietgect
 
Revolutionize Operations with Intelligent IoT Monitoring and Control
Rejig Digital
 
Why Your AI & Cybersecurity Hiring Still Misses the Mark in 2025
Virtual Employee Pvt. Ltd.
 
Doc9.....................................
SofiaCollazos
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
L2 Rules of Netiquette in Empowerment technology
Archibal2
 
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
Coupa-Overview _Assumptions presentation
annapureddyn
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
Cloud-Migration-Best-Practices-A-Practical-Guide-to-AWS-Azure-and-Google-Clou...
Artjoker Software Development Company
 
REPORT: Heating appliances market in Poland 2024
SPIUG
 

LISP: Control Structures In Lisp

  • 2. 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: simple one-way conditionals (when and unless.)
  • 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. overviewConstants and variablesReferencesAssignmentGeneralized variablesFunction invocationSimple sequencingConditionalsBlocks and ExitsIterations Mapping
  • 6. Constants and variablesCL 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 objectfunction 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. ReferencesSymbol-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 definitionSpecial-form-p symbol returns a non-nil value if the symbol globally names a special form, else returns nil
  • 10. AssignmentThe 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 variablesThe 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 invocationAny 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))6If 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,….anEx: (cons 2 3)( 2 . 3 ) (setq cons (symbol-function ‘+)#<Function +> (funcall cons 2 3) 5funcall fn &rest arguments
  • 17. Simple sequencingThese 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. conditionalsThe 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 exitsThe 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. IterationLoop 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. MappingMapping 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-listsmaplist function list &rest more-listsmapcfunction list &rest more-listsmapl function list &rest more-listsmapcan function list &rest more-listsmapcon function list &rest more-lists
  • 28. mapcar function list &rest more-listsmapcar operates on successive elements of lists, first the function is applied to the function of each list, then to the cadr of each list, and so on.
  • 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. maplist function list &rest more-listsmaplist is similar to mapcar except that the function is applied to the lists and successive elements of the lists.Ex: (maplist #’ (lambda (x) (cons ‘foo x)) ‘(a b c d)) ((foo a b c d) (foo b c d) (foo c d) (foo d))
  • 31. Visit more self help tutorialsPick 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