Search the FAQ Archives

3 - A - B - C - D - E - F - G - H - I - J - K - L - M
N - O - P - Q - R - S - T - U - V - W - X - Y - Z
faqs.org - Internet FAQ Archives

comp.cad.autocad AutoLISP FAQ (part 1/2) - general
Section - [14] How can I avoid stack overflows?

( Part1 - Part2 - Single Page )
[ Usenet FAQs | Web FAQs | Documents | RFC Index | Zip codes ]


Top Document: comp.cad.autocad AutoLISP FAQ (part 1/2) - general
Previous Document: [13] How can I pass a variable number of arguments to a lisp
Next Document: [15] (command "ROTATE3D") does not work! Why?
See reader questions & answers on this topic! - Help others by sharing your knowledge

  In old AutoLISP the stack size was hardcoded. It couldn't be extended,
  but its size should be sufficient for most purposes. In the Visual
  Lisp IDE the stack overflow is simulated at 984 recursions, on the 
  A2000 commandline or loaded programs outside the IDE there's no 
  overflow anymore. This is dangerous on recursion errors of yours,
  see [9]. Most stack overflow errors occur on a program error of
  yours, preventing the system from falling into an endless loop, or
  from using recursive functions on large lists. Therefore you are
  limited to quite short lists with recursive functions and old versions.

  You cannot decrease your used stack size with using less local
  parameters in your recursive function! However do not use APPLY, EVAL
  or MAPCAR to call your function recursively, because they eat up the
  stack. Using tail recursion doesn't help either.
  You have to convert your recursive function to a iterative one.
  (There is a mathematical theorem that says, that every recursive
  function can be converted to a iterative one, tail-recursive ones
  even automatically.) Iterative versions may use stack-like functions
  like (push) and (pop), but those versions store the stack on the heap
  (autolisp node space), which size is only limited by your amount of
  virtual memory available.

  You can test the stack overflow with this simple function:

  ;;; create a list of n numbers (zero based)
  (defun intlst (l n)
    (cond ((zerop n) l)
          (T (intlst (cons (1- n) l) (1- n)))))
  and try:
  (setq n 100)(while (intlst nil (setq n (+ 10 n)))(print n))

  In AutoLISP of R12/DOS you reach the stack limit with
  (intlst nil 138), in A13/Win with (intlst nil 240), in ACOMP bi4's
  with (intlst nil 1240), in Vital LISP/Visual Lisp IDE with 
  (intlst nil 984). With R10c10, the first dos extended lisp version, 
  you could enhance the lisp stack size with the environment variable 
  LISPSTACK. ACOMP for R10 had COMPSTACK.
  With Vital LISP or Visual LISP RTS or A2000 (outside the IDE) the 
  stack size is unlimited.

  Conversion to an iterative version yields the required results:

  (defun intlst (n / l)
    (repeat n
      (setq l (cons (setq n (1- n)) l)))) ;this looks ugly but it works

User Contributions:

1
Mar 17, 2023 @ 5:17 pm
Regardless if you believe in God or not, read this message!!!

Throughout time, we can see how we have been carefully conditioned to come to this point where we are on the verge of a cashless society. Did you know that the Bible foretold of this event almost 2,000 years ago?

In the book of Revelation 13:16-18, we read,

"He (the false prophet who deceives many by his miracles--Revelation 19:20) causes all, both small and great, rich and poor, free and slave, to receive a mark on their right hand or on their foreheads, and that no one may buy or sell except one who has the mark or the name of the beast, or the number of his name.

Here is wisdom. Let him who has understanding calculate the number of the beast, for it is the number of a man: His number is 666."

Referring to the last generation, this could only be speaking of a cashless society. Why so? Revelation 13:17 states that we cannot buy or sell unless we receive the mark of the beast. If physical money was still in use, we could buy or sell with one another without receiving the mark. This would contradict scripture that states we need the mark to buy or sell!

These verses could not be referring to something purely spiritual as scripture references two physical locations (our right hand or forehead) stating the mark will be on one "OR" the other. If this mark was purely spiritual, it would indicate both places, or one--not one OR the other!

This is where it comes together. It is amazing how accurate the Bible is concerning the implantable RFID microchip. Here is information from a man named Carl Sanders who worked with a team of engineers to help develop this RFID chip:

"Carl Sanders sat in seventeen New World Order meetings with heads-of-state officials such as Henry Kissinger and Bob Gates of the C.I.A. to discuss plans on how to bring about this one-world system. The government commissioned Carl Sanders to design a microchip for identifying and controlling the peoples of the world—a microchip that could be inserted under the skin with a hypodermic needle (a quick, convenient method that would be gradually accepted by society).

Carl Sanders, with a team of engineers behind him, with U.S. grant monies supplied by tax dollars, took on this project and designed a microchip that is powered by a lithium battery, rechargeable through the temperature changes in our skin. Without the knowledge of the Bible (Brother Sanders was not a Christian at the time), these engineers spent one-and-a-half-million dollars doing research on the best and most convenient place to have the microchip inserted.

Guess what? These researchers found that the forehead and the back of the hand (the two places the Bible says the mark will go) are not just the most convenient places, but are also the only viable places for rapid, consistent temperature changes in the skin to recharge the lithium battery. The microchip is approximately seven millimeters in length, .75 millimeters in diameter, about the size of a grain of rice. It is capable of storing pages upon pages of information about you. All your general history, work history, criminal record, health history, and financial data can be stored on this chip.

Brother Sanders believes that this microchip, which he regretfully helped design, is the “mark” spoken about in Revelation 13:16–18. The original Greek word for “mark” is “charagma,” which means a “scratch or etching.” It is also interesting to note that the number 666 is actually a word in the original Greek. The word is “chi xi stigma,” with the last part, “stigma,” also meaning “to stick or prick.” Carl believes this is referring to a hypodermic needle when they poke into the skin to inject the microchip."

Mr. Sanders asked a doctor what would happen if the lithium contained within the RFID microchip leaked into the body. The doctor replied by saying a terrible sore would appea (...)

Comment about this article, ask questions, or add new information about this topic:




Top Document: comp.cad.autocad AutoLISP FAQ (part 1/2) - general
Previous Document: [13] How can I pass a variable number of arguments to a lisp
Next Document: [15] (command "ROTATE3D") does not work! Why?

Part1 - Part2 - Single Page

[ Usenet FAQs | Web FAQs | Documents | RFC Index ]

Send corrections/additions to the FAQ Maintainer:
rurban@xarch.tu-graz.ac.at (Reini Urban)





Last Update March 27 2014 @ 02:11 PM