Basic Werk | Blog | Contact


MEMOMEM

CommonLisp_string=




(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





CommonLisp_substitute-if



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_!"


参考:

Land of Lisp


#CommonLisp #Lisp #CLISP #substitute-if #alphanumericp #digit-char-p #complement



SN 2013/07/22 22:34:38

Archives > CommonLisp_substitute-if.html





Scheme_nth_of




;; 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

Archives > Scheme_nth_of.html





CommonLisp_simple_iota



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

http://d.hatena.ne.jp/eel3/20090307/1236401934


#CommonLisp #Lisp #Scheme #iota



SN 2013/07/22 16:08:41

Archives > CommonLisp_simple_iota.html





CommonLisp_study_02




;; 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

http://lispuser.net/commonlisp/japanese.html

Land of Lisp


#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