A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://www.lispworks.com/documentation/lw71/LW/html/lw-402.htm below:

loop

Signature
loop {for|as} var
 [type-spec] 
     being {the|each}{records|record}
     {in|of} query-expression
 => result
Description

The Common Lisp loop macro has been extended with a clause for iterating over query results. This extension is available only when the SQL interface has been loaded. See The SQL Package. For a full description of the rest of the Common Lisp loop facility, see the Common Lisp Hyperspec.

Each iteration of the loop assigns the next record of the table to the variable var. The record is represented in Lisp as a list. Destructuring can be used in var to bind variables to specific attributes of the records resulting from query-expression. In conjunction with the panoply of existing clauses available from the loop macro, the new iteration clause provides an integrated report generation facility.

Example

This extended loop example, on each record returned as a result of the query, binds name, finds the salary (if any) from an associated hash-table, and for salaries greater than 20000: increments a count, accumulates the salary, and prints the details. Finally, the average salary is printed.

(loop
  for (name) being each record in
  [select [ename] :from [emp]]
  as salary = (gethash name *salary-table*)
  initially (format t "~&~20A~10D" 'name 'salary)
  when (and salary (> salary 20000))
   count salary into salaries
   and sum salary into total
   and do (format t "~&~20A~10D" name salary)
  else
   do (format t "~&~20A~10A" name "N/A")
  finally
   (format t "~2&Av Salary: ~10D" (/ total salaries)))

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4