User:Wladek92/lisp

(print (+ 2 3) )
 * source: https://en.wikipedia.org/wiki/Format_(Common_Lisp)
 * ide  : https://www.jdoodle.com/execute-clisp-online/
 * meta character ~ (tilde)
 * ~[prefixParameters][modifiers]directiveType

(format t "~C~C" #\return #\linefeed) (format t "Hello world.~%")
 * passage a la ligne
 * the FORMAT control ~% prints a newline (!).

(format T "calcul simple: 10 + 20 = ~d~%" 30) (format T "binaire simple pour ~d: ~b~%" 13 13) (format T "padding gauche sur 8 char: ~8,'0b~%" 5)
 * Prints "1 + 2 = 3" to the standard output and returns ``NIL''.
 * format binaire
 * padding a gauche

(let ((number-of-digits 6)) (declare (type (integer 0 *) number-of-digits))  (format T "padd left variable 6 char: ~v,'0b~%" number-of-digits 5)) (defun print-as-hexadecimal (number-to-format number-of-digits) "Prints the NUMBER-TO-FORMAT in the hexadecimal system (radix 16),   left-padded with zeros to at least NUMBER-OF-DIGITS."  (declare (type number        number-to-format))  (declare (type (integer 0 *) number-of-digits))  (format T "hexa format using local defun print-as-hexadecimal: ~v,'0x~%" number-of-digits number-to-format))
 * V pour longueur variable passée dans parameterlist

(print-as-hexadecimal 12 2)

(format T "~#[none selected~;one selected: ~a~;two selected: ~a and ~a~:;more selected: ~@{~a~^, ~}~]~%")
 * Directive conditionnelle
 * Prints "none selected".

(format T "~#[none selected~;one selected: ~a~;two selected: ~a and ~a~:;more selected: ~@{~a~^, ~}~]~%" 'bunny)
 * Prints "one selected: BUNNY".

(format T "~#[none selected~;one selected: ~a~;two selected: ~a and ~a~:;more selected: ~@{~a~^, ~}~]~%" 'bunny 'pigeon)
 * Prints "two selected: BUNNY and PIGEON".

(format T "~#[none selected~;one selected: ~a~;two selected: ~a and ~a~:;more selected: ~@{~a~^, ~}~]~%" 'bunny 'pigeon 'mouse)
 * Prints "more selected: BUNNY, PIGEON, MOUSE".

(format T "@ modifier for always sign: ~@b~%" 5) (format T "répétition de 5 char: ~5%" )
 * @ modifier: always with a number's sign
 * ...A CLARIFIER...
 * TYPE de directive

(setq *print-level* 102 *print-length* 5) (format T "10 ~@[ print nil level = ~D~]~%" *print-level* *print-length*) (format nil "11 ~@[ print nil level = ~D~]~%" *print-level* *print-length*) (print (format nil "12 ~@[ print nil level = ~D~]~%" *print-level* *print-length*) )

(setq *print-level* nil *print-length* 5) (print (format nil "13 ~@[ print nil level = ~D~]~@[ print length = ~D~]~%" *print-level* *print-length*) )

(format T "~%Cannot 200 call with argument~P" 0 ) ;;with arguments bizarre 0 pluriel (format T "~%Cannot 201 call with argument~P ~D" 0 0 ) ;; 0 pluriel?, 0 apres (format T "~%Cannot 202 call with ~D argument~P" 0 0 ) ;; 0 pluriel?, 0 avant
 * syntaxe plurielle des que différent de 1
 * (format T "Cannot 00 call with argument~P~%" ) NOK il manque arg

(format T "~%Cannot 203 call with argument~P" 1 ) ;; OK singulier non figuré (format T "~%Cannot 204 call with argument~P ~D" 1 1 ) ;; sing, 1 nommé apres (format T "~%Cannot 205 call with ~D argument~P" 1 1 ) ;; singulier, 1 nommé navant

(format T "~%Cannot 206 call with argument~P" 2 ) ;; OK plural, non figuré (format T "~%Cannot 206a call with argument~P ~D" 2 11 12) ;; pluriel, figuré, 2 apres (format T "~%Cannot 206b call with ~D argument~P" 2 10 11) ;; pluriel, figuré,  avant

(format T "~%Cannot 207 call with argument~P" -10 ) ;; négatif pluriel (format T "~%Cannot 207a call with argument~P ~S" -10 'suite... ) ;; négatif pluriel, suivant

(format T "~%Cannot 208 call with ~D argument~P" 1 1 ) (format T "~%Cannot 209 call with ~D argument~P~%" 3 3 ) (format T "~S : ~S a ~S argument~:P obligatoire~:P~%" 'module12 'func11 5 1);; 5 +extra ignored (format T "~S : ~S a ~S argument~:P obligatoire~:P" 'module13 'func01 1 1);; 1 +extra ignored

(format T "~%Cannot 01 call with ~#[no arg~:;several args~]" ) (format T "~%Cannot 01 call with ~#[no arg~:;several args~]~%" 35503 "DEPART" ) (format T "Cannot 02 call on ~D~@[ or more~] argument~P~%" 3 3 ) (format T "Cannot 03 call on ~D~@[ or more~] argument~P~%" 0 *print-level* nil)
 * il faut 2 arg
 * @ modifier: Only processes the clause if the format argument is T, otherwise skips it.
 * 3 3
 * argument nil
 * 0 nil

(format T "Cannot 04 call ~S on ~D~@[ or more~] argument~P~%" "DEPART" 2 *print-level* 10)
 * syntaxe combinée  Cannot call "DEPART" on 6
 * @ modifier: Only processes the clause [ if the format argument is T, otherwise skips it.

(format T "600 Listing of compilation of file ~A~%on ~A by ~A, version ~A~%" 'monfichier.txt '22.06.50 'Shimoun.Zoher '3.4.5.00 ) (format T "600a Listing de compilation du fichier ~A~%le ~A par ~A, version ~A~%" 'monfichier.txt '22.06.50 'Shimoun.Zoher '3.4.5.00 ) (format T "610 ~S from ~S: undefined label #~S#~%" 'at 'home '123AER45 2 ) (format T "~S de ~S : L'objet #Y~S n'a pas la syntaxe d'une «closure» compilée.~%" 611 'moi '56789 ) (format T "612 ~S de ~S : #~S= #~S# n'est pas permis~%" 'func33 'home 'af 'cz ) (format T "613 Image mémoire écrite dans ~A (~:D octet~:P)~%" 'fic1.txt 1024) (format T "613a Image mémoire écrite dans ~A (~:D octet~:P)~%" 'fic1.txt 0) (format T "613b Image mémoire écrite dans ~A (~:D octet~:P)~%" 'fic1.txt 1)
 * (format T "Cannot 05 call ~S on ~D~@[ or more~] argument~P ~%" "DEPART" 0 *print-level* )

(format T "614 Nouveau ~S [valeur ~D de ~D]~A~%" 'fic3.s 10 30 'f.zip) (format T "620 Recursive processing forma1 ~? ~D~%" "<~A ~D ~S>" '( "foo_forma2" 5 'bonjour) 7) (format T "620b Recursive processing forma1 ~? ~D~%" "<~A ~D>" '( "foo_forma2" 5) 7) (format T "620a Recursive processing forma1 ~? ~D~%" "<~A ~D>" '("foo_forma2" 5 14) 7) (format T "620b Pour la fonction ~S avec arguments ~S:~%Dans compil méthode effec ~S:~%Méth non val : ~S~%~?~%" 'cosval 1 'convert 'metho1 "!~A ~D! ~S" '( "foo forma2" 5 'bonsoir) ) (format T "630a ;; Traçage ~:[de la fonction~;de la macro~] ~S.~%" nil 'fin ) (format T "630b ;; Traçage ~:[de la fonction~;de la macro~] ~S.~%" 1 'fin)

(format T "640a une macro ~:[~;obsolète~]~%" 'oui) (format T "640b une macro ~:[~;obsolète~]~%" nil)

(format T "650a un nombre entier sur ~S bit~:P, est représenté comme ~:[bignum~;fixnum~].~%"  16 nil) (format T "650b un nombre entier sur ~S bit~:P, est représenté comme ~:[bignum~;fixnum~].~%"  1 T) (format T "650c un nombre entier sur ~S bit~:P, est représenté comme ~:[bignum~;fixnum~].~%"   2 T)

(format T "660a ~S a ~D argument~:P mais ~S a ~D arguments obligatoire~:P~%" 'func1 3 'func2 5) (format T "660b ~S a ~D argument~:P mais ~S a ~D argument~:P obligatoire~:P~%" 'func1 1 'func2 5) (format T "660c ~S a ~D argument~P ~S~%" 'func1 1 1 'fin) (format T "660d ~S a ~D argument~P ~S~%" 'func1 1 2 'fin)

(format T "670a ~S wascalwith ~S~:[~; ormore~] argbutreq ~:[~:[from ~S to ~S~;~S~]~;atleast ~*~S~] arg~:p.~%"   'func0 10 T 2 3 4) (format T "670b ~S wascalwith ~S~:[~; ormore~] argbutreq ~:[~:[from ~S to ~S~;~S~]~;atleast ~*~S~] arg~:p.~%"   'func0 20 nil 2 3 4) (format T "670c ~S wascalwith ~S~:[~; ormore~] argbutreq ~:[~:[from ~S to ~S~;~S~]~;atleast ~*~S~] arg~:p.~%"   'func0 20 nil nil 3 4) (format T "670d ~S wascalwith ~S~:[~; ormore~] argbutreq ~:[~:[from ~S to ~S~;~S~]~;atleast ~*~S~] arg~:p.~%"   'func0 20 nil nil nil 4 44) (format T "671a ~S est appelé avec ~S ~:[~;ou plus d'~]argument~:P mais a besoin ~:[de ~:[~S à ~S~;~S~]~;d'au moins ~*~S~] argument~:P.~%"   'func0 10 T 2 3 4) (format T "671b ~S est appelé avec ~S ~:[~;ou plus d'~]argument~:P mais a besoin ~:[de ~:[~S à ~S~;~S~]~;d'au moins ~*~S~] argument~:P.~%"   'func0 20 nil 2 3 4) (format T "671c ~S est appelé avec ~S ~:[~;ou plus d'~]argument~:P mais a besoin ~:[de ~:[~S à ~S~;~S~]~;d'au moins ~*~S~] argument~:P.~%"   'func0 20 nil nil 3 4) (format T "671d ~S est appelé avec ~S ~:[~;ou plus d'~]argument~:P mais a besoin ~:[de ~:[~S à ~S~;~S~]~;d'au moins ~*~S~] argument~:P.~%"   'func0 20 nil nil nil 4 44) (format T "671e ~S est appelé avec ~S ~:[~;ou plus d'~]argument~:P mais a besoin ~:[de ~:[~S à ~S~;~S~]~;d'au moins ~*~S~] argument~:P.~%"   'func0 0 nil nil nil 4 44)

(format T "680a importe les symboles externes de ~:D paquetage~:P ~{~A~^, ~} et~%"   3 '(func0 func2 func7) )

(format T "690a Use instead~@[ of ~S~]~%"  '(func0 func2 func7) ) (format T "690b Utiliser à la place~@[ de ~S~]~%"  '(func0 func2 func7) ) (format T "690c Utiliser à la place~@[ de ~S~]~%"  nil )

(format T "700a mot~P clé~P non autorisé~P ~{~S~#[~; et ~S~:;, ~]~} pour la fonction ~S.~                            ~%~[Les mots clés autorisés sont~;Le mot clé autorisé est~:;Les mots clés autorisés sont~] uniquement ~{~S~#[~; et ~S~:;, ~]~}.~%"  1 'Charlot 'func0 '(func2 func7) 'coseval 2 '(func12 func17) ) (format T "700d mot~P clé~P non autorisé~P ~{~S~#[~; et ~S~:;, ~]~} pour la fonction ~S.~                            ~%~[Les mots clés autorisés sont~;Le mot clé autorisé est~:;Les mots clés autorisés sont~] uniquement ~{~S~#[~; et ~S~:;, ~]~}.~%"  1 'Charlot 'func0 '(func2 func7) 'coseval 2 '(func12 func17) ) (format T "700b mot~P clé~P non autorisé~P ~{~S~#[~; et ~S~:;, ~]~} pour la fonction ~S.~                            ~%~[Les mots clés autorisés sont~;Le mot clé autorisé est~:;Les mots clés autorisés sont~] uniquement ~{~S~#[~; et ~S~:;, ~]~}.~%"  1 'Charlot 'func0 '(func2 func7) 'coseval 1 '(func12) ) (format T "700c mot~P clé~P non autorisé~P ~{~S~#[~; et ~S~:;, ~]~} pour la fonction ~S.~                            ~%~[Les mots clés autorisés sont~;Le mot clé autorisé est~:;Les mots clés autorisés sont~] uniquement ~{~S~#[~; et ~S~:;, ~]~}.~%"  2 'Charlot 'func0 '(func2 func7) 'coseval 1 '(func12) ) (format T "710a ~S : ~S n'est pas permis dans des méthodes ~{~S~^ ~}~%"   'moduel 'atangt '(func0 func2 func7) ) (format T "720a . Il porte ~:D surnom~:P ~{~A~^, ~}~%" 1 '(fanfan) ) (format T "720b . Il porte ~:D surnom~:P ~{~A~^, ~}~%" 2 '(fanfan mirette ) )

(format T "730a vers ~:D paquetage~:P ~{~A~^, ~}~%" nil '(arcos23 gentic34 ) ) (format T "730b vers ~:D paquetage~:P ~{~A~^, ~}~%" 1 '(arcos23 ) ) (format T "730c vers ~:D paquetage~:P ~{~A~^, ~}~%" 2 '(arcos23 gentic34 ) )

(format T "735a to ~:D package~:P ~{~A~^, ~}~%" 1 '(arcos23 )  ) (format T "735b to ~:D package~:P ~{~A~^, ~}~%" 2 '(arcos23 gentic34 )  )

(format T "740 une liste de pointeurs invisible pour le GC, sur ~{~S~^, ~}.~%"   '(arcos23 ki2 pi7 )   ) (format T "750a, possède ~:D propriété~:P ~{~S~^, ~}~%" 1 '(arcos23 )   ) (format T "750b, possède ~:D propriété~:P ~{~S~^, ~}~%" 2 '(arcos23 gentic34 )   ) (format T "750c, possède ~:D propriété~:P ~{~S~^, ~}~%" nil nil  )

(format T "760a, est visible dans ~:d paquetage~:p ~{~A~^, ~}~%" 1 '(arcos23 )   ) (format T "760b, est visible dans ~:d paquetage~:p ~{~A~^, ~}~%" 2 '(arcos23 gentic34 )   ) (format T "760c, est visible dans ~:d paquetage~:p ~{~A~^, ~}~%" nil nil  )

(format T "765a ~S : résultat ambigu : ~:{~%~S de ~@{~{~A ~S~}~^, ~}~}~%" 1 '(1.2 nil) 'arcos23 'gentic34  0   ) (format T "765b ~S : résultat ambigu : ~:{~%~S de ~@{~{~A ~S~}~^, ~}~}~%" 2 '(arcos23 gentic34 )   ) (format T "765c ~S : résultat ambigu : ~:{~%~S de ~@{~{~A ~S~}~^, ~}~}~%" nil nil  )

(format T "~S ~S: invalid ~S lambda-list:~A~%" "Ch1" "Ch2" "Chaine" "minColumns,colInc,minPad,padChar" 1 2 3)
 * "Input a value to be used instead~@[ of ~S~]."
 * "The value of ~S should be ~:[of type ~S~;~:*~A~]."
 * "READ: ~@?"
 * "the syntax `,@form is invalid"
 * "the syntax `( ... . ,@form) is invalid"
 * "the syntax `,.form is invalid"
 * "the syntax `,@form is invalid"
 * "~S: unquotes may occur only in (...) or #(...) forms"
 * "~S: A file with name ~A does not exist"
 * "warning: %s %lu too large, using %lu instead"
 * "Input a value to be used instead~@[ of ~S~]."
 * "~S: Use of ~S implicitly applies FUNCTION.~@\n"
 * "The :@R format directive requires an integer in the range 1 - 4999, not ~S"
 * "Cannot call ~S on ~D~@[ or more~] argument~P"
 * "Function ~s~% was already defined~a~% with the signature~%~a~% it is being re-defined with a new signature~%~a"
 * A fourretout

(format T "string format: ~S~%" "Bonjour")

(format NIL "1 + 2 = ~d" 3)
 * Creates and returns a new string containing "1 + 2 = 3".

(with-output-to-string (output) (format output "1 + 2 = ~d" 3))
 * Creates and returns a new string containing "1 + 2 = 3".

(let ((output-string (make-array 0 :element-type 'character :adjustable T                      :fill-pointer 0)))  (declare (type string output-string))  (format output-string "2 + 2 = ~d" 4)  (the string output-string))
 * Appends to the dynamic string the string "1 + 2 = 3".

(let ((output-string (make-array 0 :element-type 'character :adjustable T                      :fill-pointer 0)))  (declare (type string output-string))  (format output-string "2 + 2 = ~d" 4)  (the string output-string))
 * Appends to the dynamic string the string "1 + 2 = 3".