(string= "aaaai" "aaa" :start1 0 :end1 3) ;; -> T (string= "aaaai" "aaa") ;; -> NIL (string= "aaa" "aaa") ;; -> T
#CommonLisp #Lisp #string= #CLISP
SN 2013/07/23 22:48:05
Archives > CommonLisp_string=.html
(string= "aaaai" "aaa" :start1 0 :end1 3) ;; -> T (string= "aaaai" "aaa") ;; -> NIL (string= "aaa" "aaa") ;; -> T
#CommonLisp #Lisp #string= #CLISP
SN 2013/07/23 22:48:05
Archives > CommonLisp_string=.html
Common Lisp の文字列置換には substitute-if が使える。
Syntax は (substitute-if replacement predicate string)
(substitute-if #\_ (complement #'alphanumericp) "text-text-test!") ;; -> "text_text_test_"
(substitute-if #\_ #'alphanumericp "text-text-test!") ;; -> "____-____-____!"
(substitute-if #\_ #'(lambda (x) (equal x #\!)) "text-text-test!") ;; -> "text-text-test_"
(substitute-if #\_ #'digit-char-p "text1-text2-test3!") ;; -> "text_-text_-test_!"
参考:
#CommonLisp #Lisp #CLISP #substitute-if #alphanumericp #digit-char-p #complement
SN 2013/07/22 22:34:38
Archives > CommonLisp_substitute-if.html
;; key が lst の何番目 (nth) の要素かを返す関数 ;; 先頭が 0 番目 (define (nth-of key lst) (let f ((nth 0) (l lst)) (cond ((null? l) #f) ((equal? key (car l)) nth) (else (f (+ nth 1) (cdr l))))))
(nth-of 'code '(code name sort)) ;; -> 0 (nth-of 'name '(code name sort)) ;; -> 1 (nth-of 'price '(code name sort)) ;; -> #f
#Scheme #Lisp #nth #named-let #Gauche
SN 2013/07/22 19:33:20
Scheme の iota を Common Lisp でなるだけシンプルに書きなおしてみようと思って、まずは引数に max だけを取るバージョンを書いてみた。
(defun iota (max) (labels ((iota-iter (n) (if (<= n 0) '() (cons n (iota-iter (1- n)))))) (reverse (iota-iter max))))
(iota 10) ;; -> (1 2 3 4 5 6 7 8 9 10)
参考:
SRFI-1のiotaっぽいものをCommon Lispで書き直してみた(その2) - 新・日々録 by TRASH BOX@Eel
#CommonLisp #Lisp #Scheme #iota
SN 2013/07/22 16:08:41
Archives > CommonLisp_simple_iota.html
;; CLISP でのマルチバイト文字 [1]> (char-code #\a) 97 [2]> (char-code #\あ) 12354 [3]> (code-char 12354) #\HIRAGANA_LETTER_A [4]> (char-code #\心) 24515 [5]> (code-char 24515) #\U5FC3 [6]> (ext:convert-string-to-bytes "中村心" charset:utf-8) #(228 184 173 230 157 145 229 191 131) [9]> (ext:convert-string-from-bytes #(228 184 173 230 157 145 229 191 131) charset:utf-8) "中村心" [10]> *terminal-encoding* #<ENCODING CHARSET:UTF-8 :UNIX> [11]> (setf *terminal-encoding* charset:utf-8) #<ENCODING CHARSET:UTF-8 :UNIX> [12]> *default-file-encoding* #<ENCODING CHARSET:UTF-8 :UNIX> [13]> (setf *default-file-encoding* charset:utf-8) #<ENCODING CHARSET:UTF-8 :UNIX>
参考:
Common Lisp と日本語 - LISPUSER
#CommonLisp #Lisp #CLISP #encode #char-code #code-char #ext:convert-string-to-bytes #ext:convert-string-from-bytes
SN 2013/07/22 13:36:35
Archives > CommonLisp_study_02.html
© 2008-2013 Basic Werk