home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
lisp
/
interpre
/
apteryx
/
example.ps
< prev
next >
Wrap
Text File
|
1994-01-27
|
1KB
|
46 lines
(program example)
(uses wincrt wintypes winprocs)
(/* "Code to provide str facility in code generator")
(const (LoadStringBufferLen 200) )
(var (LoadStringBuffer PChar) )
(func LString ( (n integer) ) PChar
(begin
(LoadString HInstance n LoadStringBuffer LoadStringBufferLen)
(= LString LoadStringBuffer) ) )
(open-string-table "example" 1000)
(/* "This is a recursively defined factorial function")
(func factorial ( (n longint) ) longint
(begin
(if (= 0 n)
(= factorial 1)
(= factorial (* n (factorial (- n 1)))) ) ) )
(var (i longint) )
(var (factorials (array ( (.. 1 10) )longint)))
(def-stmt-macro from-one-to-ten (var &rest stmts)
`(for (,var 1 10) ,@stmts) )
(def-stmt-macro write2 (&rest items)
`(begin
,@(mapcar
#'(lambda (item)
(if (eq item :nl) '(writeln) `(write ,item)) )
items) ) )
(module-begin
(GetMem LoadStringBuffer LoadStringBufferLen)
(write2 (str "Factorial numbers") :nl :nl
(str " from 1 to 10") :nl :nl :nl)
(writeln)
(from-one-to-ten i
(= ([] factorials i) (factorial i) ) )
(from-one-to-ten i
(writeln i " = " ([] factorials i)) ) )