I3MID22EURRK26C4JZ2U5FBEZ57GZVMBT44KFKTU4BBYXKLILWRAC
OUSD2SQASHZTD2KRWOVMU7LUSE73NXKECFIOD7M76NMOXMD7Q4RQC
2CXQ53RHKGIT5KR7VHOVRVHCD5MK4V2J3AJDQ3CNSJLHJXXA4GXQC
DYBZJH5AYKE44F6JX6RKE4HE4DR726IARJ2A6V7QTCRDD372AMGAC
5OVGZFP3HMFSJ7EETA6SPCIVV4PENITMC2ZK3EMPBFCZGZYWF7XQC
A2JAXDJWT2FAKADYOY6QOQ7LQRMTTCDIOYT7STSESVHLZQEQJBMAC
IJPPBZNLPL4X6WDFWFBNMZ32WNJM7QZ6EFSUTNSN74AZJEZKEARAC
O6PFGAUDYCMK6SC6V5RB5ELXZ7W54OB7XPYCMECCA4BSBUVLFAPAC
JDZASPALXSFZOL3MXCKBPX74CUD3W743ZJ6W2422FIJ7NJOD67ZAC
5XO7IKBGCVXGVWMDJDE5MELS4FWRITKAU6NNV36NQ4TOZRR7UQ7QC
7SNXCC5KSDXU3MBJT2FBEPAISWPY62DHPC2RLEYXC2WVTWX5TKKQC
PXI442CY2KQHHAIJ3UNCWKTAI4IFYNGYEBRQMDR6T53YZTY2VMMQC
CSYWOT2I424JQUSOH4DB6UNOOHMB5FOA5B7AY4CE45EQORRB4LWAC
L7YV2TJYOBRNUT7FPSY352O3BPZD7CNO3XG7PY433L54XYBY5AZQC
K3OVRFE3Y23DN47XNAISH6XM5JGSCNRR6TOEO5KAKBNB54MFO27AC
RXKXDAF3GEASFJBBXAMTGPMPTHL74ZOHVBKVZ2YQXAZKMHISRY7QC
UNG2I2YG7NASZK7A2UYXTBYEM6RCMAU3BD4C57RUQKHNZQUTGIIAC
RCUBQKTURAMSYYFNNI4JPXDBZDGF6ZGWVGQYTDEKA6EOMG4QUZOAC
VSQGRPJ7PDH3MOC7GFVX5YONUZTLFRXU2O6CFT5MRGBGOO7PO6GAC
VEMUXGMKKVS2DJSA2ICYDEWLC7SII4XEWVCSD676CHLSNQLUOZ5AC
FITNBSMMJCQIFJGUMVSZYHJM4OSBXEZO5YWYEJ4CXGMFPBSIT5WAC
MPN7OJSZD5CS5N7WWS3ZSOYE7ZRCABIBHZDMHVS6IT25EO2INK7AC
6XHALMLUA5B5BBYFSWIFHSJ2BXCL6RSAW5TCKRGJEI2LURH2TQ4AC
UW27LKXM2BJ77FQLTY4WPKDSSWI2RFNFRJ7CB4U3TS7KYVIV72LQC
FHACYEOV7BG6PMCH2JL37C63CGQBIDVRBMCHCBJKXESV6NUL4T3AC
;; -*- lisp -*-
;; SPDX-License-Identifier: BSD-2-Clause
(setq quote (lambda (a) (quote a)))
(setq atom (lambda (a) (atom a)))
(setq eq (lambda (a b) (eq a b)))
(setq car (lambda (a) (car a)))
(setq cdr (lambda (a) (cdr a)))
(setq cons (lambda (a b) (cons a b)))
(setq list (lambda a a))
(setq not (lambda (a) (not a)))
(setq null (lambda (a) (null a)))
(setq equal (lambda (a b) (equal a b)))
(setq caar (lambda (a) (caar a)))
(setq cadr (lambda (a) (cadr a)))
(setq cdar (lambda (a) (cdar a)))
(setq cddr (lambda (a) (cddr a)))
(setq memq (lambda (a b) (memq a b)))
(setq member (lambda (a b) (member a b)))
(setq assoc (lambda (a b) (assoc a b)))
(setq setq nil)
(setq caaar (lambda (a) (caaar a)))
(setq caadr (lambda (a) (caadr a)))
(setq cadar (lambda (a) (cadar a)))
(setq caddr (lambda (a) (caddr a)))
(setq cdaar (lambda (a) (cdaar a)))
(setq cdadr (lambda (a) (cdadr a)))
(setq cddar (lambda (a) (cddar a)))
(setq cdddr (lambda (a) (cdddr a)))
(setq rplaca (lambda (a b) (rplaca a b)))
(setq rplacd (lambda (a b) (rplacd a b)))
(setq nreverse (lambda (a) (nreverse a)))
(setq nconc (lambda (a b) (nconc a b)))
(setq append (lambda (a b) (append a b)))
(setq apply (lambda xs (apply xs)))
(setq string-length (lambda (s) (string-length s)))
(setq print (lambda (a) (print a)))
(setq progn nil)
(setq macro nil)
(setq expand1 (lambda (a) (expand1 a)))
(setq eval (lambda (a) (eval a)))
(setq mapcar (lambda (f a)
(label ((map
(lambda (a r)
(cond ((eq a nil) (nreverse r))
(true (map (cdr a)
(cons (f (car a)) r)))))))
(map a nil))))
(macro let (lambda (body)
(label ((names (mapcar car (car body)))
(values (mapcar cadr (car body))))
(list 'progn
(append
(list (append
(list (quote lambda) names)
(cdr body)))
values)))))
(macro q (lambda (x) (list (quote quote) (car x))))
(setq foldl (lambda (f z xs)
(cond ((atom xs) (f z xs))
((null xs) z)
((null (cdr xs)) (f z (car xs)))
(true (foldl f (f z (car xs))
(cdr xs))))))
(setq reduce (lambda (f xs)
(cond ((null xs) nil)
((atom xs) xs)
((null (cdr xs)) (car xs))
(true (foldl f (car xs) (cdr xs))))))
(setq mappend (lambda (f xs)
(reduce append (mapcar f xs))))
(macro quasiquote (lambda (lis)
(label ((qq1
(lambda (an)
(cond ((atom an)
(list 'list (list 'quote an)))
((eq (car an) 'unquote)
(list 'list (cadr an)))
((eq (car an) 'unquote-splicing)
(cadr an))
(true (list 'list
(list 'reduce 'append
(cons 'list (mapcar qq1 an)))))
))))
(cond ((atom (car lis)) (list 'quote (car lis)))
(true (list 'reduce 'append
(cons 'list
(mapcar qq1 (car lis)))))))))
(macro let* (lambda (a)
(cond ((null (car a)) `(progn ,@(cdr a)))
(true `(let (,(caar a))
(let* ,(cdar a)
,@(cdr a)))))))
(setq only2+ (lambda (a b) (only2+ a b)))
(setq + (lambda xs (foldl only2+ 0 xs)))
(setq only2* (lambda (a b) (only2* a b)))
(setq * (lambda xs (foldl only2* 1 xs)))
(setq only2- (lambda (a b) (only2- a b)))
(setq - (lambda xs (reduce only2- xs)))
(setq only2/ (lambda (a b) (only2/ a b)))
(setq / (lambda xs (reduce only2/ xs)))
(setq only2// (lambda (a b) (only2// a b)))
(setq // (lambda xs (reduce only2// xs)))
(setq only2% (lambda (a b) (only2% a b)))
(setq % (lambda xs (reduce only2% xs)))
(setq only2** (lambda (a b) (only2** a b)))
(setq ** (lambda xs (reduce only2** xs)))
(setq atan2 (lambda (a b) (atan2 a b)))
(setq cos (lambda (x) (cos x)))
(setq sin (lambda (x) (sin x)))
(setq exp (lambda (x) (exp x)))
(setq log (lambda (x) (log x)))
(setq sqrt (lambda (x) (sqrt x)))
(setq rand (lambda () (rand)))
(setq srand (lambda (x) (srand x)))
(setq int (lambda (x) (int x)))
(setq unsafe-system (lambda (x) (system x)))
(setq shellquote (lambda (x) (shellquote x)))
(setq intercalate (lambda (it them)
(cond ((null them))
((null (cdr them)) them)
(true (cons (car them)
(cons it
(intercalate it (cdr them))))))))
(setq string-join (lambda args (apply strcat (intercalate (car args) (cdr args)))))
(setq system (lambda argv (unsafe-system (apply string-join " " (mapcar shellquote argv)))))
(setq tolower (lambda (x) (tolower x)))
(setq toupper (lambda (x) (toupper x)))
(setq substr (lambda xs (cond ((eq (list-length xs 2))
(substr (car xs) (cadr xs)))
(true (substr (car xs) (cadr xs) (caddr xs))))))
(setq index (lambda (s t) (index s t)))
(setq match (lambda (s r) (match s r)))
(setq split (lambda (s fs) (split s fs)))
(setq sub (lambda (r t s) (sub r t s)))
(setq gsub (lambda (r t s) (gsub r t s)))
(setq sprintf nil)
(setq printf nil)
(setq strcat (lambda xs (strcat xs)))
(setq getline (lambda () (getline)))
(setq with-ors nil)
(setq with-output-to nil)
(setq with-input-from nil)
(setq fflush nil)
(setq close nil)
(setq gc-dot nil)
(setq gc nil)
(setq dump-dot nil)
(setq dump nil)
eval_read_str("\
(progn \
(setq quote (lambda (a) (quote a))) \
(setq atom (lambda (a) (atom a))) \
(setq eq (lambda (a b) (eq a b))) \
(setq car (lambda (a) (car a))) \
(setq cdr (lambda (a) (cdr a))) \
(setq cons (lambda (a b) (cons a b))) \
(setq list (lambda a a)) \
(setq not (lambda (a) (not a))) \
(setq null (lambda (a) (null a))) \
(setq equal (lambda (a b) (equal a b))) \
(setq caar (lambda (a) (caar a))) \
(setq cadr (lambda (a) (cadr a))) \
(setq cdar (lambda (a) (cdar a))) \
(setq cddr (lambda (a) (cddr a))) \
(setq memq (lambda (a b) (memq a b))) \
(setq member (lambda (a b) (member a b))) \
(setq assoc (lambda (a b) (assoc a b))) \
\"lol\" \
(setq setq nil) \
(setq caaar (lambda (a) (caaar a))) \
(setq caadr (lambda (a) (caadr a))) \
(setq cadar (lambda (a) (cadar a))) \
(setq caddr (lambda (a) (caddr a))) \
(setq cdaar (lambda (a) (cdaar a))) \
(setq cdadr (lambda (a) (cdadr a))) \
(setq cddar (lambda (a) (cddar a))) \
(setq cdddr (lambda (a) (cdddr a))) \
(setq rplaca (lambda (a b) (rplaca a b))) \
(setq rplacd (lambda (a b) (rplacd a b))) \
(setq nreverse (lambda (a) (nreverse a))) \
(setq nconc (lambda (a b) (nconc a b))) \
(setq append (lambda (a b) (append a b))) \
(setq apply (lambda xs (apply xs))) \
(setq string-length (lambda (s) (string-length s))) \
(setq print (lambda (a) (print a))) \
\"you can't use progn as a function, because.\" \
(setq progn nil) \
(setq macro nil) \
(setq expand1 (lambda (a) (expand1 a))) \
(setq eval (lambda (a) (eval a))) \
)")
eval_read_str("\
(progn \
(setq mapcar (lambda (f a) \
(label ((map \
(lambda (a r) \
(cond ((eq a nil) (nreverse r)) \
(true (map (cdr a) \
(cons (f (car a)) r))))))) \
(map a nil)))) \
(macro let (lambda (body) \
(label ((names (mapcar car (car body))) \
(values (mapcar cadr (car body)))) \
(list 'progn \
(append \
(list (append \
(list (quote lambda) names) \
(cdr body))) \
values))))) \
(macro q (lambda (x) (list (quote quote) (car x)))) \
(setq foldl (lambda (f z xs) \
(cond ((atom xs) (f z xs)) \
((null xs) z) \
((null (cdr xs)) (f z (car xs))) \
(true (foldl f (f z (car xs)) \
(cdr xs)))))) \
(setq reduce (lambda (f xs) \
(cond ((null xs) nil) \
((atom xs) xs) \
((null (cdr xs)) (car xs)) \
(true (foldl f (car xs) (cdr xs)))))) \
(setq mappend (lambda (f xs) \
(reduce append (mapcar f xs)))) \
(macro quasiquote (lambda (lis) \
(label ((qq1 \
(lambda (an) \
(cond ((atom an) \
(list 'list (list 'quote an))) \
((eq (car an) 'unquote) \
(list 'list (cadr an))) \
((eq (car an) 'unquote-splicing) \
(cadr an)) \
(true (list 'list \
(list 'reduce 'append \
(cons 'list (mapcar qq1 an))))) \
)))) \
(cond ((atom (car lis)) (list 'quote (car lis))) \
(true (list 'reduce 'append \
(cons 'list \
(mapcar qq1 (car lis))))))))) \
(macro let* (lambda (a) \
(cond ((null (car a)) `(progn ,@(cdr a))) \
(true `(let (,(caar a)) \
(let* ,(cdar a) \
,@(cdr a))))))) \
)")
eval_read_str("\
(progn \
(setq only2+ (lambda (a b) (only2+ a b))) \
(setq + (lambda xs (foldl only2+ 0 xs))) \
(setq only2* (lambda (a b) (only2* a b))) \
(setq * (lambda xs (foldl only2* 1 xs))) \
(setq only2- (lambda (a b) (only2- a b))) \
(setq - (lambda xs (reduce only2- xs))) \
(setq only2/ (lambda (a b) (only2/ a b))) \
(setq / (lambda xs (reduce only2/ xs))) \
(setq only2// (lambda (a b) (only2// a b))) \
(setq // (lambda xs (reduce only2// xs))) \
(setq only2% (lambda (a b) (only2% a b))) \
(setq % (lambda xs (reduce only2% xs))) \
(setq only2** (lambda (a b) (only2** a b))) \
(setq ** (lambda xs (reduce only2** xs))) \
(setq atan2 (lambda (a b) (atan2 a b))) \
(setq cos (lambda (x) (cos x))) \
(setq sin (lambda (x) (sin x))) \
(setq exp (lambda (x) (exp x))) \
(setq log (lambda (x) (log x))) \
(setq sqrt (lambda (x) (sqrt x))) \
(setq rand (lambda () (rand))) \
(setq srand (lambda (x) (srand x))) \
(setq int (lambda (x) (int x))) \
(setq unsafe-system (lambda (x) (system x))) \
(setq shellquote (lambda (x) (shellquote x))) \
(setq intercalate (lambda (it them) \
(cond ((null them)) \
((null (cdr them)) them) \
(true (cons (car them) \
(cons it \
(intercalate it (cdr them)))))))) \
(setq string-join (lambda args (apply strcat (intercalate (car args) (cdr args))))) \
(setq system (lambda argv (unsafe-system (apply string-join \" \" (mapcar shellquote argv)))))\
(setq tolower (lambda (x) (tolower x))) \
(setq toupper (lambda (x) (toupper x))) \
(setq substr (lambda xs (cond ((eq (list-length xs 2)) \
(substr (car xs) (cadr xs))) \
(true (substr (car xs) (cadr xs) (caddr xs))))))\
(setq index (lambda (s t) (index s t))) \
(setq match (lambda (s r) (match s r))) \
(setq split (lambda (s fs) (split s fs))) \
(setq sub (lambda (r t s) (sub r t s))) \
(setq gsub (lambda (r t s) (gsub r t s))) \
\"no printf/sprintf function values, i've got no apply\" \
(setq sprintf nil) \
(setq printf nil) \
(setq strcat (lambda xs (strcat xs))) \
(setq getline (lambda () (getline))) \
(setq with-ors nil) \
(setq with-output-to nil) \
(setq with-input-from nil) \
(setq fflush nil) \
(setq close nil) \
(setq gc-dot nil) \
(setq gc nil) \
(setq dump-dot nil) \
(setq dump nil) \
)\
")
while((getline < "lib.glotawk") > 0) {
eval_read_str($0)
}