#|
;; example usage:
(defun flatten (x)
(match x ((x . xs) (append (flatten x) (flatten xs)))
((x ! and x (atom x)) (list x))))
|#
Name:
Anonymous2013-08-13 7:44
>>45
And that code is now totally outdated, because most of the boilerplate gets implemented using Symta itself and in a simpler way. I.e. if one wants lazy lists or finger trees, he could just implement them and they would work like builtin lists.
Name:
Anonymous2013-08-13 13:09
(LAMBDA (A)
(DECLARE (OPTIMIZE (SPEED 3) (SAFETY 0) (DEBUG 0))
(TYPE FIXNUM A))
(LET ((REG (MAKE-ARRAY 256 :ELEMENT-TYPE 'FIXNUM :INITIAL-ELEMENT 0)))
(DECLARE (TYPE (SIMPLE-ARRAY FIXNUM (256)) REG)
(IGNORABLE REG))
(LABELS ((#:L980 (A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(DECLARE
(TYPE FIXNUM A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(IGNORABLE A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979))
(#:L981 A A #:R975 #:R976 #:R977 #:R978 #:R979))
(#:L981 (A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(DECLARE
(TYPE FIXNUM A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(IGNORABLE A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979))
(#:L982 A #:R974 A #:R976 #:R977 #:R978 #:R979))
(#:L982 (A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(DECLARE
(TYPE FIXNUM A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(IGNORABLE A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979))
(#:L983 #:R974 #:R974 #:R975 #:R976 #:R977 #:R978 #:R979))
(#:L983 (A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(DECLARE
(TYPE FIXNUM A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(IGNORABLE A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979))
(#:L984 (1- A) #:R974 #:R975 #:R976 #:R977 #:R978 #:R979))
(#:L984 (A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(DECLARE
(TYPE FIXNUM A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(IGNORABLE A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979))
(#:L985 A A #:R975 #:R976 #:R977 #:R978 #:R979))
(#:L985 (A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(DECLARE
(TYPE FIXNUM A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(IGNORABLE A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979))
(#:L986 #:R976 #:R974 #:R975 #:R976 #:R977 #:R978 #:R979))
(#:L986 (A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(DECLARE
(TYPE FIXNUM A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(IGNORABLE A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979))
(#:L987 (+ A #:R975) #:R974 #:R975 #:R976 #:R977 #:R978 #:R979))
(#:L987 (A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(DECLARE
(TYPE FIXNUM A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(IGNORABLE A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979))
(#:L988 A #:R974 #:R975 A #:R977 #:R978 #:R979))
(#:L988 (A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(DECLARE
(TYPE FIXNUM A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(IGNORABLE A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979))
(#:L989 #:R974 #:R974 #:R975 #:R976 #:R977 #:R978 #:R979))
(#:L989 (A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(DECLARE
(TYPE FIXNUM A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(IGNORABLE A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979))
(IF (ZEROP A)
(#:L990 A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(#:L983 A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)))
(#:L990 (A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(DECLARE
(TYPE FIXNUM A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(IGNORABLE A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979))
(#:L991 #:R976 #:R974 #:R975 #:R976 #:R977 #:R978 #:R979))
(#:L991 (A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(DECLARE
(TYPE FIXNUM A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(IGNORABLE A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979))
(:EXIT A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979))
(:EXIT (A #:R974 #:R975 #:R976 #:R977 #:R978 #:R979)
(DECLARE (IGNORE #:R974 #:R975 #:R976 #:R977 #:R978 #:R979))
A))
(#:L980 A 0 0 0 0 0 0))))
Some generated code using labels and tail-calls rather than the tagbody/goto combination.
Name:
Anonymous2013-08-13 14:19
>>53 (SAFETY 0)
back to premature optimization, ``please!''
Name:
Anonymous2013-08-13 14:29
(DUBS (CHECK EM))
Name:
Anonymous2013-08-13 15:17
>>54
without (SAFETY 0) you wouldn't have been born
Name:
Anonymous2013-08-13 19:02
>>54
It's not premature optimization, as this was the final step in optimizing the program.