home *** CD-ROM | disk | FTP | other *** search
- (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)) ) )
-
-