================================================================================ Block Comments ================================================================================ #|(ql.foo:quickload "cl-project") (defun add (a b) | (+ a b ))|# (add 8 9) -------------------------------------------------------------------------------- (source (block_comment) (list_lit (sym_lit) (num_lit) (num_lit))) ================================================================================ Block Comments 2 ================================================================================ (add #|8 |#9) -------------------------------------------------------------------------------- (source (list_lit (sym_lit) (block_comment) (num_lit))) ================================================================================ Quasi-Quoting ================================================================================ `(add a ,(b)) `(add a ,@(b)) `(add a , b) `(add a ,b) -------------------------------------------------------------------------------- (source (syn_quoting_lit (list_lit (sym_lit) (sym_lit) (unquoting_lit (list_lit (sym_lit))))) (syn_quoting_lit (list_lit (sym_lit) (sym_lit) (unquote_splicing_lit (list_lit (sym_lit))))) (syn_quoting_lit (list_lit (sym_lit) (sym_lit) (unquoting_lit (sym_lit)))) (syn_quoting_lit (list_lit (sym_lit) (sym_lit) (unquoting_lit (sym_lit))))) ================================================================================ Fancy Literal ================================================================================ (|`(add a ,(b))| a) -------------------------------------------------------------------------------- (source (list_lit (fancy_literal) (sym_lit))) ================================================================================ Defun header ================================================================================ (defun a (a b) (car 1 2) 2) ( defun a (a b) (car 1 2) 2) (defmethod input-gradient :around (lazy-array output-gradient index) (let ((input (nth index (lazy-array-inputs lazy-array))) (value (call-next-method))) (if (petalisp.type-inference:ntype= (element-ntype value) (element-ntype input)) value (lazy #'coerce value (element-type input))))) -------------------------------------------------------------------------------- (source (list_lit (defun (defun_header (defun_keyword) (sym_lit) (list_lit (sym_lit) (sym_lit))) (list_lit (sym_lit) (num_lit) (num_lit)) (num_lit))) (list_lit (defun (defun_header (defun_keyword) (sym_lit) (list_lit (sym_lit) (sym_lit))) (list_lit (sym_lit) (num_lit) (num_lit)) (num_lit))) (list_lit (defun (defun_header (defun_keyword) (sym_lit) (kwd_lit (kwd_symbol)) (list_lit (sym_lit) (sym_lit) (sym_lit))) (list_lit (sym_lit) (list_lit (list_lit (sym_lit) (list_lit (sym_lit) (sym_lit) (list_lit (sym_lit) (sym_lit)))) (list_lit (sym_lit) (list_lit (sym_lit)))) (list_lit (sym_lit) (list_lit (package_lit (sym_lit) (sym_lit)) (list_lit (sym_lit) (sym_lit)) (list_lit (sym_lit) (sym_lit))) (sym_lit) (list_lit (sym_lit) (var_quoting_lit (sym_lit)) (sym_lit) (list_lit (sym_lit) (sym_lit)))))))) ================================================================================ Vectors ================================================================================ #( 2 3 4) #() -------------------------------------------------------------------------------- (source (vec_lit (list_lit (num_lit) (num_lit) (num_lit))) (vec_lit (list_lit))) ================================================================================ Arrays ================================================================================ #0A2 #2A((2 3 4)) -------------------------------------------------------------------------------- (source (vec_lit (num_lit)) (vec_lit (array_dimension (num_lit)) (list_lit (list_lit (num_lit) (num_lit) (num_lit))))) ================================================================================ Loop Macro ================================================================================ (cl:loop for dim-idx in xyz for letter in (list 'x 'y 'z) collect (let ((current-range (nth dim-idx iteration-ranges))) `(, (get-counter-symbol dim-idx) (+ ,(range-start current-range) (* ,(range-step current-range) ,(case letter (x '(+ thread-idx-x (* block-idx-x block-dim-x))) (y '(+ thread-idx-y (* block-idx-y block-dim-y))) (z '(+ thread-idx-z (* block-idx-z block-dim-z))))))))) -------------------------------------------------------------------------------- (source (list_lit (loop_macro (loop_clause (for_clause (sym_lit) (for_clause_word) (sym_lit))) (loop_clause (for_clause (sym_lit) (for_clause_word) (list_lit (sym_lit) (quoting_lit (sym_lit)) (quoting_lit (sym_lit)) (quoting_lit (sym_lit))))) (loop_clause (accumulation_clause (accumulation_verb) (list_lit (sym_lit) (list_lit (list_lit (sym_lit) (list_lit (sym_lit) (sym_lit) (sym_lit)))) (syn_quoting_lit (list_lit (unquoting_lit (list_lit (sym_lit) (sym_lit))) (list_lit (sym_lit) (unquoting_lit (list_lit (sym_lit) (sym_lit))) (list_lit (sym_lit) (unquoting_lit (list_lit (sym_lit) (sym_lit))) (unquoting_lit (list_lit (sym_lit) (sym_lit) (list_lit (sym_lit) (quoting_lit (list_lit (sym_lit) (sym_lit) (list_lit (sym_lit) (sym_lit) (sym_lit))))) (list_lit (sym_lit) (quoting_lit (list_lit (sym_lit) (sym_lit) (list_lit (sym_lit) (sym_lit) (sym_lit))))) (list_lit (sym_lit) (quoting_lit (list_lit (sym_lit) (sym_lit) (list_lit (sym_lit) (sym_lit) (sym_lit))))))))))))))))) ================================================================================ Loop Macro (Accumulation) ================================================================================ (loop for i below 10 collect x into a) -------------------------------------------------------------------------------- (source (list_lit (loop_macro (loop_clause (for_clause (sym_lit) (for_clause_word) (num_lit))) (loop_clause (accumulation_clause (accumulation_verb) (sym_lit) (sym_lit)))))) ================================================================================ Loop Macro (finally) ================================================================================ (loop for a below 8 for x = (+ a) with first-x = (+ a) if (> x 10) return x do (format t "~A ~A~%" x first-x) finally (return 3)) -------------------------------------------------------------------------------- (source (list_lit (loop_macro (loop_clause (for_clause (sym_lit) (for_clause_word) (num_lit))) (loop_clause (for_clause (sym_lit) (for_clause_word) (list_lit (sym_lit) (sym_lit)))) (loop_clause (with_clause (sym_lit) (list_lit (sym_lit) (sym_lit)))) (loop_clause (condition_clause (list_lit (sym_lit) (sym_lit) (num_lit)))) (loop_clause (termination_clause (sym_lit))) (loop_clause (do_clause (list_lit (sym_lit) (sym_lit) (str_lit (format_specifier (format_directive_type)) (format_specifier (format_directive_type)) (format_specifier (format_directive_type))) (sym_lit) (sym_lit)))) (loop_clause (termination_clause (list_lit (sym_lit) (num_lit))))))) ================================================================================ Loop Macro (do do do) ================================================================================ (loop for a below 8 for x = (+ a) with first-x = (+ a) if (> x 10) return x do (format t "~A ~A~%" x first-x) (format t "~A ~A~%" x first-x) finally (return 3)) -------------------------------------------------------------------------------- (source (list_lit (loop_macro (loop_clause (for_clause (sym_lit) (for_clause_word) (num_lit))) (loop_clause (for_clause (sym_lit) (for_clause_word) (list_lit (sym_lit) (sym_lit)))) (loop_clause (with_clause (sym_lit) (list_lit (sym_lit) (sym_lit)))) (loop_clause (condition_clause (list_lit (sym_lit) (sym_lit) (num_lit)))) (loop_clause (termination_clause (sym_lit))) (loop_clause (do_clause (list_lit (sym_lit) (sym_lit) (str_lit (format_specifier (format_directive_type)) (format_specifier (format_directive_type)) (format_specifier (format_directive_type))) (sym_lit) (sym_lit)))) (loop_clause (list_lit (sym_lit) (sym_lit) (str_lit (format_specifier (format_directive_type)) (format_specifier (format_directive_type)) (format_specifier (format_directive_type))) (sym_lit) (sym_lit))) (loop_clause (termination_clause (list_lit (sym_lit) (num_lit))))))) ================================================================================ Conses ================================================================================ (2 . 3) (2 . ( 2 3)) -------------------------------------------------------------------------------- (source (list_lit (num_lit) (num_lit)) (list_lit (num_lit) (list_lit (num_lit) (num_lit)))) ================================================================================ Complex Numbers ================================================================================ #C(2 3) #C ( 2 1) #C(-2 1) -------------------------------------------------------------------------------- (source (complex_num_lit (num_lit) (num_lit)) (complex_num_lit (num_lit) (num_lit)) (complex_num_lit (num_lit) (num_lit))) ================================================================================ Reader Macros ================================================================================ #+unix(loop) #+windows (loop) -------------------------------------------------------------------------------- (source (include_reader_macro (sym_lit) (list_lit (loop_macro))) (include_reader_macro (sym_lit) (list_lit (loop_macro)))) ================================================================================ Packages ================================================================================ foo:baz foo.bar:baz (foo.bar:baz) -------------------------------------------------------------------------------- (source (package_lit (sym_lit) (sym_lit)) (package_lit (sym_lit) (sym_lit)) (list_lit (package_lit (sym_lit) (sym_lit)))) ================================================================================ Keywords ================================================================================ :foo :foo.bar -------------------------------------------------------------------------------- (source (kwd_lit (kwd_symbol)) (kwd_lit (kwd_symbol))) ================================================================================ Functions with numbers (TODO!!!) ================================================================================ 1+ 1- -------------------------------------------------------------------------------- (source (num_lit) (sym_lit) (num_lit) (sym_lit)) ================================================================================ Petalisp shapes ================================================================================ (~ (* w h) ~ 128) -------------------------------------------------------------------------------- (source (list_lit (sym_lit) (list_lit (sym_lit) (sym_lit) (sym_lit)) (sym_lit) (num_lit))) ================================================================================ Chars ================================================================================ #\? -------------------------------------------------------------------------------- (source (char_lit)) ================================================================================ Dotted literals ================================================================================ foo.bar foo. bar .bar #.bar -------------------------------------------------------------------------------- (source (sym_lit) (sym_lit) (sym_lit) (sym_lit) (sym_lit)) ================================================================================ Loop (else) ================================================================================ (loop for input-index from 0 for input-constraint across (transformation-input-mask transformation) if (not input-constraint) collect (transformation-input-symbol input-index) else collect input-constraint) -------------------------------------------------------------------------------- (source (list_lit (loop_macro (loop_clause (for_clause (sym_lit) (for_clause_word) (num_lit))) (loop_clause (for_clause (sym_lit) (for_clause_word) (list_lit (sym_lit) (sym_lit)))) (loop_clause (condition_clause (list_lit (sym_lit) (sym_lit)))) (loop_clause (accumulation_clause (accumulation_verb) (list_lit (sym_lit) (sym_lit)))) (loop_clause (condition_clause)) (loop_clause (accumulation_clause (accumulation_verb) (sym_lit)))))) ================================================================================ Multiple gaps in Loop ================================================================================ (defmethod cl-dot:graph-object-points-to ((graph any-graph) node) (loop for edge in (graphviz-potential-edges graph node) append ;; There must be a more graceful way to loop over sequences... (loop for target in (coerce (graphviz-outgoing-edge-targets graph edge node) 'list) for edge-number from 0 collect (make-instance 'cl-dot:attributed :attributes (graphviz-edge-attributes graph edge node target edge-number) :object target)))) -------------------------------------------------------------------------------- (source (list_lit (defun (defun_header (defun_keyword) (package_lit (sym_lit) (sym_lit)) (list_lit (list_lit (sym_lit) (sym_lit)) (sym_lit))) (list_lit (loop_macro (loop_clause (for_clause (sym_lit) (for_clause_word) (list_lit (sym_lit) (sym_lit) (sym_lit)))) (loop_clause (accumulation_clause (accumulation_verb) (comment) (list_lit (loop_macro (loop_clause (for_clause (sym_lit) (for_clause_word) (list_lit (sym_lit) (list_lit (sym_lit) (sym_lit) (sym_lit) (sym_lit)) (quoting_lit (sym_lit))))) (loop_clause (for_clause (sym_lit) (for_clause_word) (num_lit))) (loop_clause (accumulation_clause (accumulation_verb) (list_lit (sym_lit) (quoting_lit (package_lit (sym_lit) (sym_lit))) (kwd_lit (kwd_symbol)) (list_lit (sym_lit) (sym_lit) (sym_lit) (sym_lit) (sym_lit) (sym_lit)) (kwd_lit (kwd_symbol)) (sym_lit))))))))))))) ================================================================================ Unquoting in defun ================================================================================ (defun ,foo ,arguments ) -------------------------------------------------------------------------------- (source (list_lit (defun (defun_header (defun_keyword) (unquoting_lit (sym_lit)) (unquoting_lit (sym_lit)))))) ================================================================================ Weird quoting ================================================================================ (deftype worker-pool-workers () `simple-vector) -------------------------------------------------------------------------------- (source (list_lit (sym_lit) (sym_lit) (list_lit) (syn_quoting_lit (sym_lit)))) ================================================================================ Num Literals (TODO) ================================================================================ (deftype zero () '(member 0 0S0 -0S0 0F0 -0F0 0D0 -0D0 0L0 -0L0 #C(0S0 0S0) #C(0S0 -0S0) #C(-0S0 0S0) #C(-0S0 -0S0) #C(0F0 0F0) #C(0F0 -0F0) #C(-0F0 0F0) #C(-0F0 -0F0) #C(0D0 0D0) #C(0D0 -0D0) #C(-0D0 0D0) #C(-0D0 -0D0) #C(0L0 0L0) #C(0L0 -0L0) #C(-0L0 0L0) #C(-0L0 -0L0))) -------------------------------------------------------------------------------- (source (ERROR (sym_lit) (sym_lit) (list_lit) (sym_lit) (num_lit) (num_lit) (sym_lit) (num_lit) (sym_lit) (num_lit) (sym_lit) (num_lit) (sym_lit) (num_lit) (sym_lit) (num_lit) (sym_lit) (num_lit) (sym_lit) (num_lit) (sym_lit) (num_lit))) ================================================================================ Format ================================================================================ "~S" "~3,-4:@s" "~,+4S" (format T "~8,0b" 5) (format T "~v,'0b" 8 5) (load "~/quicklisp/setup") 2 (load "~/foo:quicklisp/setup") -------------------------------------------------------------------------------- (source (str_lit (format_specifier (format_directive_type))) (str_lit (format_specifier (format_modifiers (num_lit) (num_lit)) (format_directive_type))) (str_lit (format_specifier (format_directive_type (num_lit)))) (list_lit (sym_lit) (sym_lit) (str_lit (format_specifier (format_directive_type (num_lit) (num_lit)))) (num_lit)) (list_lit (sym_lit) (sym_lit) (str_lit (format_specifier (format_prefix_parameters) (format_directive_type (char_lit)))) (num_lit) (num_lit)) (list_lit (sym_lit) (str_lit (format_specifier (format_directive_type (sym_lit))))) (num_lit) (list_lit (sym_lit) (str_lit (format_specifier (format_directive_type (package_lit (sym_lit) (sym_lit))))))) ================================================================================ Path Literals ================================================================================ #P"t/global_kernel.ptx" #P"~/dev/foo" -------------------------------------------------------------------------------- (source (path_lit (str_lit)) (path_lit (str_lit)))