Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2010-06-27

Githubを利用して普段のLISP開発環境を晒してみたらどうか

| 12:05 | Githubを利用して普段のLISP開発環境を晒してみたらどうか - わだばLisperになる を含むブックマーク はてなブックマーク - Githubを利用して普段のLISP開発環境を晒してみたらどうか - わだばLisperになる

Githubにソースを上げるとtarボールにしてダウンロードできるリンクができるのですが、都合の良いことに、asdf-installは、ウェブ上のtarボールのURLを指定してインストールすることが可能です。

割と重宝するのですが、これを利用して、Github上に普段のLISP開発環境を登録したら面白いかもしれないと思いました。

具体的には、普段作業で利用しているのは、大抵、CL-USERパッケージだと思いますが、これを自分のGithubのアカウント名と同じ名でパッケージ化し、Githubに上げます。

Githubを利用しているCLer同士で開発環境を晒し合うと思わぬ発見があったりして面白いことになったりしないかな、というところです。

ASDFでインストールできるように晒す手順

  1. ユーザー名.asd を作成
  2. package.lisp を作成
  3. ユーティリティをファイルに纒める (任意)

1. asdファイルを作成 (ユーザー名.asd)

(asdf:DEFSYSTEM :G000001
  :NAME "g000001"
  :DESCRIPTION "g000001"
  :VERSION "2"
  :COMPONENTS ((:FILE "package") ;パッケージを記述するファイル
               (:FILE "g000001" :DEPENDS-ON ("package"))) ;好きな定義を書くファイル
  :DEPENDS-ON (:SERIES
               :ALEXANDRIA
               :SHIBUYA.LISP ))

2. package.lisp に パッケージ周りを設定 (.lisp)

(DEFPACKAGE :G000001
  (:USE :CL 
        :SHIBUYA.LISP
        :SERIES)
  (:IMPORT-FROM :CL-USER 
                :QUIT)
  (:IMPORT-FROM :ASDF 
                :OOS :LOAD-OP)
  (:IMPORT-FROM :ASDF-INSTALL
                :INSTALL)
  (:IMPORT-FROM :ALEXANDRIA
                :CURRY))

3. ユーティリティ等があれば、DEFSYSTEMで指定

等々とすれば準備完了

便利にASDF-INSTALLできるように、

(DEFUN GITHUB-INSTALL (USER-NAME NAME)
  (ASDF-INSTALL:INSTALL
   (FORMAT NIL
           "http://github.com/~A/~A/tarball/master"
           USER-NAME
           NAME)))

のようなものを定義してみます。

これで、

(github-install "g000001" "g000001")

のようにすると、そのユーザーの設定がパッケージとしてインストールできます。

さらに進めて、起動時にCL-USERの代りに作成したパッケージに切り換えるのも良いかもしれません(自分はそうしています)

しかし、問題は、こういう形式で晒している人をどうやってみつけるか、ですねー。

2010-01-01

Shibuya.lispという名前でCLのユーティリティ集を始めてみました

| 21:10 | Shibuya.lispという名前でCLのユーティリティ集を始めてみました - わだばLisperになる を含むブックマーク はてなブックマーク - Shibuya.lispという名前でCLのユーティリティ集を始めてみました - わだばLisperになる

自分は、ユーティリティ集が大好きなのですが、つねづね自分でも作ってみたいと思っていました。

最近Githubがはやっているので、ここで皆でごちゃごちゃ作ると楽しいのではないかなと思い、Shibuya.lispという人が釣れそうな名前で行くことにしてみました。

勝手に名付けて怒られそうですが、許して下さい。

  • 自分で考えた俺構文や、便利関数も普段から使ってみないと良いアイデアなのか分からないことが多いので、それなりにライブラリに纒めて簡単に使えるようにしておきたい。
  • 自作のユーティリティだとブログ等に書く際に注釈を入れたりしないといけないので、どっかに纒めて誰でも使えるようにして置くと楽そう
  • みんなで作るとカオスになって楽しそう
  • たまたま、githubだと、asdf-installでのインストールが楽だった

という辺りが動機です。

場所は、

です。

パッケージ名は、shibuya.lisp、ニックネームは、slなので、

(sl:listq a b c d)
;⇒ (A B C D)

などと短かく書けて良いかなと思います。

また、自作のユーティリティだとブログ等に書く際に注釈を入れたりしないといけない、というのは、

(require :shibuya.lisp) ; (asdf:oos 'adsf:load-op :shibuya.lisp)
(use-package :shibuya.lisp)

(mapcar (cut * <> 3)
        '(1 2 3 4))
;⇒ (3 6 9 12)

などとインポートする手順だけを書くことによって定義の説明を省けることを期待しています。

インストールは、ASDFを利用している人は、

(asdf-install:install "http://github.com/g000001/shibuya.lisp/tarball/master")

でOKで、常に最新のものがインストールされます。

自分は、gitの使い方が分からないので色々失敗すると多いと思いますが、どんどん取り込む方針ですので、興味があったら是非参加してみて下さい。

リーダーマクロの共有は、完全にカオスになりそうなので別ファイルにしていますが、named-readtables等を使って整理できれば良いかなと考えています。