L1VM - square
L1VM - square - L1VM and Lisp
Here is one square calculation program in Brackets and in Lisp. The Brackets program uses a macro instead of a function.
Lisp:
;;;; square.lsp
(defun square (num) (* num num))
(defvar x 25)
(defvar xs (square x))
(format t "square of ~D = ~D" x xs)
Brackets:
// square-2.l1com
#include <intr.l1h>
#func Square (NUM, SQUARE) :{SQUARE = (NUM * NUM)}
(main func)
(set int64 1 zero 0)
(set int64 1 x 25)
(set int64 1 xs 0)
(set string s sqstr "square of ")
(set string s eqstr " = ")
Square (x, xs)
print_s (sqstr)
print_i (x)
print_s (eqstr)
print_i (xs)
print_n
exit (zero)
(funcend)
Output:
$ l1vm square-2 -q
square of 25 = 625