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