なんだこれは

はてなダイアリーから移転しました。

macport で CCL 1.10 を OSX 10.11(El Caption)にインストールする

前日に日記にもかいていたがいろいろやってみると、macports で CCL 1.10 を El Caption にインストールできた。

現時点で、macports にある、ccl 1.10 を Mac OSX 10.11(El Caption)にインストールすると カーネルのリビルドで失敗する。
10.11 では、アセンブラが clang に変更されていて、.stabs ディレクティブを解釈しないようになったとのこと。解釈させるには、ASFLAGS に -Q オプションを加えればいいらしい。

つぎのようにすると ccl 1.10 をインストールできる。なお 1.11 では、対応ずみらしい。

続きを読む

quicklisp が壊れたので再インストールした

Windows7 32bit上で Clozure CL 1.10 で quicklisp を使用していたが、ql:quickload や ql:system-apropos で Errorがでるようになってしまった。外部に接続する際にゴミがはいっているもよう、どこか壊したらしい。

とはいうものの、どうしてよいかわからなかったので強制的に再インストールした。

具体的には、C:/Users/you/quicklisp などの quicklisp のあるフォルダを 別の名前に変更して、もういちど quicklisp をインストールするだけ。

それから、ql:quickload slime-quicklisp-helper を実施する。これでエラーがでなくなったので安心する。

あとは、古いquicklisp のフォルダをみながら、ql:quickload を実施していけばいい。

my Clozure CL environment setting Memo

1.1 get ccl by macports for Mac Only

sudo port install ccl

1.2 or get ccl by subversion

#for mac x86/x86_64
svn co http://svn.clozure.com/publicsvn/openmcl/release/1.10/darwinx86/ccl
#for linux x86/x86_64
svn co http://svn.clozure.com/publicsvn/openmcl/release/1.10/linuxx86/ccl
#for windows x86/x86_64
svn co http://svn.clozure.com/publicsvn/openmcl/release/1.10/windows/ccl

1.2 or go to http://ccl.clozure.com/download.html and download tarballs

2 run ccl64 ("ccl64" is clozure cl command for macports)

3 get quicklisp from http://beta.quicklisp.org/quicklisp.lisp

4 install quicklisp and slime

(load "path-to-downloaded/quicklisp")
(quicklisp-quickstart:install)
(ql:add-to-init-file)
(ql:system-apropos "slime-helper")
(ql:quickload "quicklisp-slime-helper")

5 obeying the above result tomodify your ~/.emacs.d/init.el
#NOTE: in some environment, $HOME is different emacs and ccl

guess で 文字コードを判定させてひらく

guess という、日本語の文字コードを推定するライブラリがhttps://github.com/zqwell/guess あった。

common lisp は、clozure clで 使ってみた。

二回開いているので無駄っぽい。
普通に、vectorを 文字列に変換しましょう→自分
しかし、先頭の3行だけ欲しいような場合は、自分で文字列から行をパースせないかんのかしら。

clozure clは Shift_JIS を :CP932 で表すので :SJIS を変換しないといけない、はず。
直接編集するのもなんなので利用側で変換するかな。

(defun file-vector (file)
  (with-open-file (s file :direction :input :element-type '(unsigned-byte 8) )
    (let ((buf (make-array (file-length s) :element-type '(unsigned-byte 8))))
      (read-sequence buf s)
      buf)))

(defun guess-code (file)
  (let ((encode (guess:ces-guess-from-vector (file-vector file) :jp )))
    (if (eq encode :SJIS)
	:CP932
	encode)))

(defun open-with-guess-code (file &optional (max-line 30))
  (let ((encode (guess-code file)))
    (with-open-file (fs file
			:direction :input
			:external-format (ccl:make-external-format
					  :character-encoding encode))
      (loop for line = (read-line fs nil nil)
	 while line
	 collect line))))