SlideShare a Scribd company logo
 Loops in Lisp
overviewParsing loop clausesLoop syntaxLoop constructsIteration controlConditional and unconditional executionData types
A loop is a series of expressions that are executed one or more times, a process known as iteration.The driving element of the loop facility is the loop macro.The expanded form consists of three basic parts in the tag body:Loop prologue contains forma that are executed before execution begins.
Loop body contains those forms that are executed during iteration.
Stepping is the process of assigning the variable the next item in the series of items.
Loop epilogue contains forms that are executed after iteration terminates.Parsing loop clausesSyntactic part of the loop construct are called clauses.The scope of each clause is determined by the top level parsing of that clause’s keyword.Example for a loop with six clauses:(loop for I from 1 to (compute-to-value)    while (not (unacceptable i))    collect (square i)    do (format t “Working on ~D now” i)    when (evenp i)      do (format t “ ~D is a non-odd number” i)finally (format t “About to exit!”))
Order of executionClauses are executed in the loop body in the order they appear in the sourceExecution is repeated until a clause terminates a loop or until the CL return, go or throw form is encountered.All variables are initialized first regardless of where the establishing clauses appear in the sourceThe code for any initially clauses is collected into one progn in the order in which the clauses appear in the source.The code for any finally clauses is collected into one progn in the order in which the clauses appear in the source.
A with clause introduces variable binding and an optional initial value.Iteration control clauses implicitly perform the following actions:Initializing variables
Stepping variables, generally between each execution of the loop body.
Performing termination tests, generally just before the execution of the loop body.Kinds of loopsVariable initialization and stepping:The for and as constructs provide iteration control clauses that establish a variable to be initialized.
The with construct is similar to a single let construct.
The repeat construct causes the iteration to terminate after a specified number of times.Value accumulation:The collect construct takes one form in its clause and adds the value of that form to the end of a list of values.
Append construct takes one form in its clause and appends the value of that form to the end of a list of values
The sum construct takes one form in its clause that must evaluate to a number and adds that number into a running total.
The count construct takes one form in its clause and counts the number of times that form evaluates to a non-nil value.
The minimize construct takes one form In clause and determines the minimum value obtained by evaluating the form.
The maximizeconstruct takes one form In clause and determines the maximum value obtained by evaluating the form.Termination conditionsLoop-finish lisp macro terminates iteration and returns any accumulated result.For and as constructs provides termination test that is determined by the iteration control clause.The repeat number causes termination after a specified number of iterations.While construct takes one form, a condition,  and terminates the iteration if the condition evaluates to a nil.The until construct is the inverse of while. It terminates.
The always construct takes one form and terminates the loop if the form ever evaluates to nil.The never construct takes one form and terminates the loop if the form ever evaluates to non-nillThe thereis construct takes one form and terminates the loop if the form ever evaluates to a non-nill.Unconditional execution:The do construct simply evaluates all forms in its clause.The return construct takes one form and returns its value.
Conditional execution:If construct one form as a predicate and a clause that is executed when the predicate is true.The when construct is a synonym for fi.The else construct provides an optional component of if, when and unless clauses that is executed when the prediction is false.The end construct provides an optional component to mark the end of a conditional clause.
Miscellaneous operationsThe named construct assigns a name to a loop construct.The initially construct causes its forms to be evaluated in the loop prologue, which proceeds all loop code except for initial settings specified by the constructs with, for, or as.The finally construct causes its forms to be evaluated in the loop epilogue after normal iteration terminates.
Loop syntaxA loop consists of following type of clauses:Initial-final ::=initially|finallyVariables ::=with|initial-final|for-as|repeatMain ::=unconditional|accumulation|conditional|termination|initial-finalLoop ::=(loop [named name] {variables}* {main}* )
(loop {tag|expr}* )Where expr is any CL expression that can be evaluated , and tag  is any symbol not identifiable as a loop keyword.(loop do {tag|expr}*)A loop prologue consists of any automatic variable initializations prescribed by the variable clauses, along with any initially clauses in the order they appear in the source.
Examples for loops:;;; To print some numbers(loop as i from 1 to 4         do (print i))1     2    3    4NIL;;; To print every third number(loop for i from 10 downto 1 by 3             do (print i))10      7      4      1 NIL
;;; step incrementally from the default starting value(loop as i below 5              do (print i))0    1    2    3    4   NIL
;;; to print every other item in a list.(loop for item in ‘(1 2 3 4 5) bt #’ cddr               do (print item))1   3   5 NIL;;; collect successive tails of a list(loop for sublist on ‘(a b c d)          collect sublist)((A B C D)  (B C D) (C D) (D));;; print a list by using destructing with loop keyword ON.(loop for (item) on ‘(1 2 3)              do (print item))1     2    3  NIL;;; print items in a list without using destructing(loop for item in ‘(1 2 3)        do (print item))1    2    3 NIL
End-test controlThe loop keywords always, never, thereis, until, and while designate constructs that use a single test condition to determine when loop loop iteration should terminate.while expr while construct allows iteration to continue until the specified expression expr evaluates to nil.until expr until construct is equivalent to while, if the value of the specified expression is non-nil, iteration terminates.always expralways takes one form and terminates the loop if the form ever evaluates to nil.

More Related Content

PPTX
Operators loops conditional and statements
Vladislav Hadzhiyski
 
PPTX
Loops in java script
Ravi Bhadauria
 
PPTX
Loops Basics
Mushiii
 
PDF
Java conditional statements
Kuppusamy P
 
DOC
Jumping statements
Suneel Dogra
 
PPTX
Loops in c language
tanmaymodi4
 
PPTX
Program control statements in c#
Dr.Neeraj Kumar Pandey
 
PPTX
C language (Part 2)
Dr. SURBHI SAROHA
 
Operators loops conditional and statements
Vladislav Hadzhiyski
 
Loops in java script
Ravi Bhadauria
 
Loops Basics
Mushiii
 
Java conditional statements
Kuppusamy P
 
Jumping statements
Suneel Dogra
 
Loops in c language
tanmaymodi4
 
Program control statements in c#
Dr.Neeraj Kumar Pandey
 
C language (Part 2)
Dr. SURBHI SAROHA
 

What's hot (18)

PPTX
Control flow statements in java
yugandhar vadlamudi
 
PPTX
Types of loops in c language
sneha2494
 
PPTX
C# Loops
Hock Leng PUAH
 
PPTX
While , For , Do-While Loop
Abhishek Choksi
 
PPTX
C programming language tutorial
Dr. SURBHI SAROHA
 
PPT
Decision making and looping
Hossain Md Shakhawat
 
PPTX
Loops in C
Kamal Acharya
 
ODP
Template classes and ROS messages
University of Colorado at Boulder
 
PPTX
Looping (Computer programming and utilization)
Digvijaysinh Gohil
 
PPTX
What is to loop in c++
03446940736
 
PPTX
Do...while loop structure
Jd Mercado
 
PDF
Algorithm and Programming (Branching Structure)
Adam Mukharil Bachtiar
 
PDF
Unit II chapter 4 Loops in C
Sowmya Jyothi
 
PDF
Algorithm and Programming (Looping Structure)
Adam Mukharil Bachtiar
 
PPTX
Ch6 Loops
SzeChingChen
 
Control flow statements in java
yugandhar vadlamudi
 
Types of loops in c language
sneha2494
 
C# Loops
Hock Leng PUAH
 
While , For , Do-While Loop
Abhishek Choksi
 
C programming language tutorial
Dr. SURBHI SAROHA
 
Decision making and looping
Hossain Md Shakhawat
 
Loops in C
Kamal Acharya
 
Template classes and ROS messages
University of Colorado at Boulder
 
Looping (Computer programming and utilization)
Digvijaysinh Gohil
 
What is to loop in c++
03446940736
 
Do...while loop structure
Jd Mercado
 
Algorithm and Programming (Branching Structure)
Adam Mukharil Bachtiar
 
Unit II chapter 4 Loops in C
Sowmya Jyothi
 
Algorithm and Programming (Looping Structure)
Adam Mukharil Bachtiar
 
Ch6 Loops
SzeChingChen
 
Ad

Similar to LISP: Loops In Lisp (20)

PPT
Mesics lecture 7 iteration and repetitive executions
eShikshak
 
PPT
Chapter06.PPT
vamsiKrishnasai3
 
PPT
Pemrograman komputer 6 (repetisi)
jayamartha
 
PPT
ch8.ppt
FakhriAlamKhan1
 
PPTX
Loops c++
Shivani Singh
 
DOC
Slide07 repetitions
altwirqi
 
PPTX
Decision Making and Looping
Munazza-Mah-Jabeen
 
PDF
final pl paper
AADIL AHMED ADAM
 
PPT
C++ CH3-P2 using c++ in all other parts.ppt
MutacalimMohamed
 
PPSX
C lecture 3 control statements slideshare
Gagan Deep
 
PPT
Lecture-13.ppt
AliSarmad15
 
PDF
Loops in C Programming | for Loop | do-while Loop | while Loop | Nested Loop
Priyom Majumder
 
PDF
Repetition, Basic loop structures, Loop programming techniques
Jason J Pulikkottil
 
PPT
8 statement level
Munawar Ahmed
 
PDF
07 control+structures
baran19901990
 
PPT
Iteration
Liam Dunphy
 
PDF
4-Loops computer programming in c btech.pdf
ArkSingh7
 
PDF
[ITP - Lecture 11] Loops in C/C++
Muhammad Hammad Waseem
 
DOCX
loops and iteration.docx
JavvajiVenkat
 
PPTX
CSE-1203-Lecture-07-Loops-Part-II. c pptx
MARaihanEmon
 
Mesics lecture 7 iteration and repetitive executions
eShikshak
 
Chapter06.PPT
vamsiKrishnasai3
 
Pemrograman komputer 6 (repetisi)
jayamartha
 
Loops c++
Shivani Singh
 
Slide07 repetitions
altwirqi
 
Decision Making and Looping
Munazza-Mah-Jabeen
 
final pl paper
AADIL AHMED ADAM
 
C++ CH3-P2 using c++ in all other parts.ppt
MutacalimMohamed
 
C lecture 3 control statements slideshare
Gagan Deep
 
Lecture-13.ppt
AliSarmad15
 
Loops in C Programming | for Loop | do-while Loop | while Loop | Nested Loop
Priyom Majumder
 
Repetition, Basic loop structures, Loop programming techniques
Jason J Pulikkottil
 
8 statement level
Munawar Ahmed
 
07 control+structures
baran19901990
 
Iteration
Liam Dunphy
 
4-Loops computer programming in c btech.pdf
ArkSingh7
 
[ITP - Lecture 11] Loops in C/C++
Muhammad Hammad Waseem
 
loops and iteration.docx
JavvajiVenkat
 
CSE-1203-Lecture-07-Loops-Part-II. c pptx
MARaihanEmon
 
Ad

More from LISP Content (13)

PPTX
LISP: Control Structures In Lisp
LISP Content
 
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: Program structure in lisp
LISP Content
 
PPTX
LISP: Predicates in lisp
LISP Content
 
PPTX
LISP: Macros in lisp
LISP Content
 
PPTX
LISP: Data types in lisp
LISP Content
 
PPTX
LISP: Introduction To Lisp
LISP Content
 
LISP: Control Structures In 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: Program structure in lisp
LISP Content
 
LISP: Predicates in lisp
LISP Content
 
LISP: Macros in lisp
LISP Content
 
LISP: Data types in lisp
LISP Content
 
LISP: Introduction To Lisp
LISP Content
 

Recently uploaded (20)

PDF
DevOps & Developer Experience Summer BBQ
AUGNYC
 
PDF
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PPTX
Smart Infrastructure and Automation through IoT Sensors
Rejig Digital
 
PDF
Why Your AI & Cybersecurity Hiring Still Misses the Mark in 2025
Virtual Employee Pvt. Ltd.
 
PPTX
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
Francisco Vieira Júnior
 
PDF
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
PDF
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
PDF
Software Development Company | KodekX
KodekX
 
PPT
Coupa-Kickoff-Meeting-Template presentai
annapureddyn
 
PDF
REPORT: Heating appliances market in Poland 2024
SPIUG
 
PDF
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
PDF
Building High-Performance Oracle Teams: Strategic Staffing for Database Manag...
SMACT Works
 
PPTX
Coupa-Overview _Assumptions presentation
annapureddyn
 
PDF
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
PDF
Advances in Ultra High Voltage (UHV) Transmission and Distribution Systems.pdf
Nabajyoti Banik
 
PPTX
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
PPTX
ChatGPT's Deck on The Enduring Legacy of Fax Machines
Greg Swan
 
DevOps & Developer Experience Summer BBQ
AUGNYC
 
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
Smart Infrastructure and Automation through IoT Sensors
Rejig Digital
 
Why Your AI & Cybersecurity Hiring Still Misses the Mark in 2025
Virtual Employee Pvt. Ltd.
 
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
Francisco Vieira Júnior
 
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
Software Development Company | KodekX
KodekX
 
Coupa-Kickoff-Meeting-Template presentai
annapureddyn
 
REPORT: Heating appliances market in Poland 2024
SPIUG
 
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
Building High-Performance Oracle Teams: Strategic Staffing for Database Manag...
SMACT Works
 
Coupa-Overview _Assumptions presentation
annapureddyn
 
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
Advances in Ultra High Voltage (UHV) Transmission and Distribution Systems.pdf
Nabajyoti Banik
 
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
ChatGPT's Deck on The Enduring Legacy of Fax Machines
Greg Swan
 

LISP: Loops In Lisp

  • 2. overviewParsing loop clausesLoop syntaxLoop constructsIteration controlConditional and unconditional executionData types
  • 3. A loop is a series of expressions that are executed one or more times, a process known as iteration.The driving element of the loop facility is the loop macro.The expanded form consists of three basic parts in the tag body:Loop prologue contains forma that are executed before execution begins.
  • 4. Loop body contains those forms that are executed during iteration.
  • 5. Stepping is the process of assigning the variable the next item in the series of items.
  • 6. Loop epilogue contains forms that are executed after iteration terminates.Parsing loop clausesSyntactic part of the loop construct are called clauses.The scope of each clause is determined by the top level parsing of that clause’s keyword.Example for a loop with six clauses:(loop for I from 1 to (compute-to-value) while (not (unacceptable i)) collect (square i) do (format t “Working on ~D now” i) when (evenp i) do (format t “ ~D is a non-odd number” i)finally (format t “About to exit!”))
  • 7. Order of executionClauses are executed in the loop body in the order they appear in the sourceExecution is repeated until a clause terminates a loop or until the CL return, go or throw form is encountered.All variables are initialized first regardless of where the establishing clauses appear in the sourceThe code for any initially clauses is collected into one progn in the order in which the clauses appear in the source.The code for any finally clauses is collected into one progn in the order in which the clauses appear in the source.
  • 8. A with clause introduces variable binding and an optional initial value.Iteration control clauses implicitly perform the following actions:Initializing variables
  • 9. Stepping variables, generally between each execution of the loop body.
  • 10. Performing termination tests, generally just before the execution of the loop body.Kinds of loopsVariable initialization and stepping:The for and as constructs provide iteration control clauses that establish a variable to be initialized.
  • 11. The with construct is similar to a single let construct.
  • 12. The repeat construct causes the iteration to terminate after a specified number of times.Value accumulation:The collect construct takes one form in its clause and adds the value of that form to the end of a list of values.
  • 13. Append construct takes one form in its clause and appends the value of that form to the end of a list of values
  • 14. The sum construct takes one form in its clause that must evaluate to a number and adds that number into a running total.
  • 15. The count construct takes one form in its clause and counts the number of times that form evaluates to a non-nil value.
  • 16. The minimize construct takes one form In clause and determines the minimum value obtained by evaluating the form.
  • 17. The maximizeconstruct takes one form In clause and determines the maximum value obtained by evaluating the form.Termination conditionsLoop-finish lisp macro terminates iteration and returns any accumulated result.For and as constructs provides termination test that is determined by the iteration control clause.The repeat number causes termination after a specified number of iterations.While construct takes one form, a condition, and terminates the iteration if the condition evaluates to a nil.The until construct is the inverse of while. It terminates.
  • 18. The always construct takes one form and terminates the loop if the form ever evaluates to nil.The never construct takes one form and terminates the loop if the form ever evaluates to non-nillThe thereis construct takes one form and terminates the loop if the form ever evaluates to a non-nill.Unconditional execution:The do construct simply evaluates all forms in its clause.The return construct takes one form and returns its value.
  • 19. Conditional execution:If construct one form as a predicate and a clause that is executed when the predicate is true.The when construct is a synonym for fi.The else construct provides an optional component of if, when and unless clauses that is executed when the prediction is false.The end construct provides an optional component to mark the end of a conditional clause.
  • 20. Miscellaneous operationsThe named construct assigns a name to a loop construct.The initially construct causes its forms to be evaluated in the loop prologue, which proceeds all loop code except for initial settings specified by the constructs with, for, or as.The finally construct causes its forms to be evaluated in the loop epilogue after normal iteration terminates.
  • 21. Loop syntaxA loop consists of following type of clauses:Initial-final ::=initially|finallyVariables ::=with|initial-final|for-as|repeatMain ::=unconditional|accumulation|conditional|termination|initial-finalLoop ::=(loop [named name] {variables}* {main}* )
  • 22. (loop {tag|expr}* )Where expr is any CL expression that can be evaluated , and tag is any symbol not identifiable as a loop keyword.(loop do {tag|expr}*)A loop prologue consists of any automatic variable initializations prescribed by the variable clauses, along with any initially clauses in the order they appear in the source.
  • 23. Examples for loops:;;; To print some numbers(loop as i from 1 to 4 do (print i))1 2 3 4NIL;;; To print every third number(loop for i from 10 downto 1 by 3 do (print i))10 7 4 1 NIL
  • 24. ;;; step incrementally from the default starting value(loop as i below 5 do (print i))0 1 2 3 4 NIL
  • 25. ;;; to print every other item in a list.(loop for item in ‘(1 2 3 4 5) bt #’ cddr do (print item))1 3 5 NIL;;; collect successive tails of a list(loop for sublist on ‘(a b c d) collect sublist)((A B C D) (B C D) (C D) (D));;; print a list by using destructing with loop keyword ON.(loop for (item) on ‘(1 2 3) do (print item))1 2 3 NIL;;; print items in a list without using destructing(loop for item in ‘(1 2 3) do (print item))1 2 3 NIL
  • 26. End-test controlThe loop keywords always, never, thereis, until, and while designate constructs that use a single test condition to determine when loop loop iteration should terminate.while expr while construct allows iteration to continue until the specified expression expr evaluates to nil.until expr until construct is equivalent to while, if the value of the specified expression is non-nil, iteration terminates.always expralways takes one form and terminates the loop if the form ever evaluates to nil.
  • 27. Never expr never form takes one form and terminates the loop if the form ever evaluates to non-nill.thereis expr thereis construct takes one form and terminates the loop if the form ever evaluates to a non-nil.While and until constructs causes termination, control is passed to the loop epilogue, where any finally clauses will be executed.
  • 28. Ex:(loop for i from 0 to 10 always ( < i 11)) T(loop for i from 0 to 10 never (> i 11)) T(loop for i from 0 to 10 always ( < i 9) finally (print “you won’t see this”))NIL(loop never t finally (print “you won’t see this”))NIL
  • 29. (loop thereis “Here is my value” finally (print “you won’t see this”)) “here is my value”(loop for i from 0 to 10 thereis (when (> i 10) i) ) 11(loop for i from 1 to 10 thereis (> i 11) finally (print i)) 11 NIL
  • 30. Unconditional executionThe loop construct do takes one or more expressions and simply evaluates them in order.do {expr} do construct simply evaluates the specified expressions wherever they occur in the expanded form of loop.Ex: (loop for ifrom 1 to 5 do (print i))1 2 3 4 5NIL.
  • 31. return expr return construct terminates the loop and returns the value of the specified expression as the value of the loop .Ex: (loop for item in ‘( 1 2 3 a 4 5) when (not (numberp item)) return (cerror “enter new value” “non-numeric value: ~s” item)) Error: non-numeric value: A
  • 32. Data typestype-spec argument that allows you to specify certain data types for loop variables.The type-spec argument syntax:type-spec ::=of-type d-type-specd-type-spec ::=type-specifier|(d-type-spec . D-type-spec)The type-spec argument is used for destructing
  • 33. 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