CLISP 實現記錄 6 迴圈

2021-08-10 22:27:42 字數 898 閱讀 2658

原文見:

這裡不允許不同的預設返回值導致的混合終止測試條件,因為這個表示式

(loop repeat 1 thereis nil never nil)

沒有指定應該返回t(來自never的預設返回值) 還是nil(來自thereis的預設返回值).

這個標準中已經明確指出迴圈的變數會一直存在於finally分句, 但是沒有指出這些變數會有什麼值. 所以依賴於這些變數的**, 比如說,

(loop for x on y finally (return x))

固然不可移植於多個common lisp實現, 應該避免.

[cltl2] 和 [ansi cl standard

] 之間, 在loop的語法上有一些靠近, 比如說, 以下結構在以前是合法的但是在以後是不合法的:

(loop initially for i from 1 to 5 do (print i) finally return i)

custom:*loop-ansi*nil, 這樣的結構是一直被clisp所接受的但是在巨集展開時會引出乙個警告. 當custom:*loop-ansi*不是nil, 會發出乙個error.

原文見:

巨集dolistdotimes為迴圈變數建立乙個單個的繫結並且在每次迴圈時對其賦值.

ES6 promise實現佇列迴圈

題目 紅燈三秒亮一次,綠燈一秒亮一次,黃燈2秒亮一次 如何讓三個燈不斷交替重複亮燈?用promse實現 三個亮燈函式已經存在解析 紅燈三秒亮一次,綠燈一秒亮一次,黃燈2秒亮一次,意思就是3秒,執行一次 red 函式,2秒執行一次 green 函式,1秒執行一次 yellow 函式,不斷交替重複亮燈,...

迴圈語句 6

while迴圈格式 while expression statement 可以是以分號結尾的簡單語句,也可以是花括號括起來的復合語句使用while迴圈,牢記 只有在測試條件後面的單獨語句才是迴圈部分 示例 include int main include int mian include int m...

for迴圈複習(6)

監護室每小時測量一次病人的血壓,如果收縮在90 140並且舒張壓在60 90 包含端值 則稱之為正常,現在給出某病人若干次測量的血壓值,計算病人保持正常血壓的最長小時數。輸入 第一行為乙個正整數n n 100 其後有行,每行2個正整數,分別為一次測量的收縮壓和舒張壓。輸出 僅一行,血壓連續正常的最長...