<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>garaemon.net</title>
	<atom:link href="http://garaemon.net/wordpress/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://garaemon.net/wordpress</link>
	<description>脳汁でコードを書く</description>
	<pubDate>Thu, 01 Apr 2010 17:43:50 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>ja</language>
			<item>
		<title>wordpressやーめた</title>
		<link>http://garaemon.net/wordpress/?p=250</link>
		<comments>http://garaemon.net/wordpress/?p=250#comments</comments>
		<pubDate>Thu, 01 Apr 2010 17:43:50 +0000</pubDate>
		<dc:creator>garaemon</dc:creator>
		
		<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://garaemon.net/wordpress/?p=250</guid>
		<description><![CDATA[wordpressがうざい. というかwebブラウザ経由なのがキニイラナイ.
そこで全部emacsのorg-modeからやることにした.
というわけでこのwordpressは今後更新されません, はい.
こっちのほうをミ [...]]]></description>
			<content:encoded><![CDATA[<p>wordpressがうざい. というかwebブラウザ経由なのがキニイラナイ.</p>
<p>そこで全部emacsのorg-modeからやることにした.</p>
<p>というわけでこのwordpressは今後更新されません, はい.</p>
<p><a href="http://garaemon.net/org/top.html">こっち</a>のほうをミテネ</p>
]]></content:encoded>
			<wfw:commentRss>http://garaemon.net/wordpress/?feed=rss2&amp;p=250</wfw:commentRss>
		</item>
		<item>
		<title>今後のemacs-settings</title>
		<link>http://garaemon.net/wordpress/?p=246</link>
		<comments>http://garaemon.net/wordpress/?p=246#comments</comments>
		<pubDate>Sun, 28 Mar 2010 09:18:55 +0000</pubDate>
		<dc:creator>garaemon</dc:creator>
		
		<category><![CDATA[emacs lisp]]></category>

		<category><![CDATA[emac lisp]]></category>

		<guid isPermaLink="false">http://garaemon.net/wordpress/?p=246</guid>
		<description><![CDATA[rubykitchさんにtwitterで紹介していただいて, すこしはみなさんの目にふれるようになっているようです
ここでemacs-settingsのTODOや今後の更新予定(やわかっているバグ)について軽く触れます
 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://twitter.com/rubikitch/status/11186333464">rubykitchさんにtwitterで紹介</a>していただいて, すこしはみなさんの目にふれるようになっているようです</p>
<p>ここで<a href="http://garaemon.net/wordpress/?p=234">emacs-settings</a>のTODOや今後の更新予定(やわかっているバグ)について軽く触れます</p>
<h2>update対応</h2>
<p>aptのupdateを想像してください. ソースファイルを最新版にする機能</p>
<h2>upgrade対応</h2>
<p>aptのupgradeを想像してください. たぶん現状のemac-settingsだとinstallを2回以上やるとおかしくなります. うーんどうするかなぁ. 最新かどうかをチェックしなくてはいけない</p>
<h2>activate, deactivate対応</h2>
<p>portのactivate, deactivateみたいに, downloadしているけどもloadしたくない, みたいなのに対応したいと思ってます.</p>
<h2>auto-installとの共存</h2>
<p>これは必須ですね. auto-installとどうやって共存していくかは模索中です</p>
<p>それにしてもwordpress使いにくいな&#8230; 移行しよう</p>
]]></content:encoded>
			<wfw:commentRss>http://garaemon.net/wordpress/?feed=rss2&amp;p=246</wfw:commentRss>
		</item>
		<item>
		<title>emacs-settings: コマンドラインからemacsのパッケージをインストール</title>
		<link>http://garaemon.net/wordpress/?p=234</link>
		<comments>http://garaemon.net/wordpress/?p=234#comments</comments>
		<pubDate>Sat, 27 Mar 2010 13:55:32 +0000</pubDate>
		<dc:creator>garaemon</dc:creator>
		
		<category><![CDATA[emacs lisp]]></category>

		<guid isPermaLink="false">http://garaemon.net/wordpress/?p=234</guid>
		<description><![CDATA[emacsを使っていて, aptのようにemacsのパッケージが簡単にインストールできたら良いと思ったことはありませんか?
auto-installという便利なものがありますが, 個人的にはコマンドラインからやりたいなあ [...]]]></description>
			<content:encoded><![CDATA[<p>emacsを使っていて, aptのようにemacsのパッケージが簡単にインストールできたら良いと思ったことはありませんか?</p>
<p><a href="http://www.emacswiki.org/emacs/AutoInstall">auto-install</a>という便利なものがありますが, 個人的にはコマンドラインからやりたいなあ, と思ったりします.</p>
<p>というのも, 対話的なものだとスクリプト一発で俺環境構築!みたいなことができないじゃないですか.</p>
<p>というわけで作りました. 名前はemacs-settings. emacsのためのaptです.<br />
これは<a href="http://common-lisp.net/project/clbuild/">clbuild</a>と<a href="http://www.ros.org/wiki/rosinstall">rosinstall</a>に多大な影響をうけています.</p>
<p>たとえばこんな感じになります</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$ emacs-settings packages
navi-2ch
   2ch viewer
clmemo
   ChangeLog Memo
goby
   Presentation Mode
slime
   Common Lisp IDE
twittering
   Post to twitter and get your time line</pre></div></div>

<p>で, パッケージのインストールは</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$ emacs-settings install navi-2ch
now downloading http://sourceforge.net/projects/navi2ch/files/navi2ch/navi2ch-1.8.3/navi2ch-1.8.3.tar.gz/download to /Users/garaemon/prog/emacs-settings/emacs.d/navi-2ch...
now expanding /Users/garaemon/prog/emacs-settings/emacs.d/navi-2ch/navi2ch-1.8.3.tar.gz to /Users/garaemon/prog/emacs-settings/emacs.d/navi-2ch...
&nbsp;
checking for a BSD-compatible install... /usr/bin/install -c</pre></div></div>

<p>といった感じにすすんでいきます.</p>
<p>このemacs-settings自体はgithubからとってくることで利用できます.</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$ git clone git://github.com/garaemon/emacs-settings.git</pre></div></div>

<p>このemacs-settingsというディレクトリにパスを通してください.</p>
<p>次にこのemacs-settingsでインストールしたパッケージが利用できるように.emacsをいじります.</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$ emacs-settings setup &gt;&gt; ~/.emacs</pre></div></div>

<p>これで設定はおしまいです. あとはemacs-settings packagesで欲しいパッケージをみつけて, emacs-settings installするだけです. 詳しいことはemacs-settings helpしてね. (サポートしてない機能も多いです).</p>
<p>次にemacs-settingsディレクトリの構成をみていきましょう.</p>
<pre>emacs-settings/
 emacs-settings # shell script. コマンドラインではこれを呼び出してる
 emacs-settings.el # emacs lisp script. じつは裏でこれを呼んでる
 init.el # 普通にemacsを起動するときにこれを呼び込む
 emacs.d/ #downloadしたパッケージの置き場所
 sources/ # /etc/apt/sources.list的なもの
  list.el #ここにパッケージのurlとかを書く</pre>
<p>addコマンドでsourcesにリストファイルを追加できます.</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$ emacs-settings add http://garaemon.net/emacs-settings-repo/garaemon.el</pre></div></div>

<p>例えばこの後,</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$ emacs-settings install garaemon-all-settings</pre></div></div>

<p>とやると僕のすべての設定をinstallできます.</p>
<p>このリストファイルは以下のようなフォーマットになってます.</p>

<div class="wp_syntax"><div class="code"><pre class="lisp lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>http:<span style="color: #66cc66;">//</span>garaemon.net<span style="color: #66cc66;">/</span>emacs<span style="color: #66cc66;">-</span>settings<span style="color: #66cc66;">-</span>repo<span style="color: #66cc66;">/</span>garaemon.el <span style="color: #808080; font-style: italic;">;このファイルの最新版のありか</span>
 <span style="color: #808080; font-style: italic;">;; ここからパッケージの記述</span>
 <span style="color: #66cc66;">&#40;</span>emacs<span style="color: #66cc66;">-</span>wiki <span style="color: #808080; font-style: italic;">;名前</span>
  library <span style="color: #808080; font-style: italic;">;パッケージのタイプ. library, bootstrap, virtualがあります. bootstrapは起動時に読み込まれる</span>
  <span style="color: #808080; font-style: italic;">;; tar-ball, cvs, svnとかがかけます</span>
   <span style="color: #66cc66;">&#40;</span>tar<span style="color: #66cc66;">-</span>ball http:<span style="color: #66cc66;">//</span>mwolson.org<span style="color: #66cc66;">/</span>static<span style="color: #66cc66;">/</span>dist<span style="color: #66cc66;">/</span>emacs<span style="color: #66cc66;">-</span>wiki<span style="color: #66cc66;">/</span>emacs<span style="color: #66cc66;">-</span>wiki<span style="color: #66cc66;">-</span>2.72.tar.gz<span style="color: #66cc66;">&#41;</span>
    <span style="color: #ff0000;">&quot;Implementation of a Wiki by JohnWiegley&quot;</span> <span style="color: #808080; font-style: italic;">;description</span>
   <span style="color: #66cc66;">&#40;</span>planner<span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">;依存してる他のパッケージ</span>
   <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;cd emacs-wiki-2.72 &amp;&amp; EMACS=$EMACS make&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">;インストールするときにすべきコマンド. 文字列だとshellで実行</span>
...<span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>まぁmigemoにまだ対応してないとか, いろいろと問題もあるんですがねー. バグいっぱいありそうだし&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://garaemon.net/wordpress/?feed=rss2&amp;p=234</wfw:commentRss>
		</item>
		<item>
		<title>Common Lispで中置記法</title>
		<link>http://garaemon.net/wordpress/?p=225</link>
		<comments>http://garaemon.net/wordpress/?p=225#comments</comments>
		<pubDate>Tue, 09 Mar 2010 16:28:05 +0000</pubDate>
		<dc:creator>garaemon</dc:creator>
		
		<category><![CDATA[common lisp]]></category>

		<guid isPermaLink="false">http://garaemon.net/wordpress/?p=225</guid>
		<description><![CDATA[lispでは前置記法が用いられますが, 数学的なプログラムの実装はなかなか難しいという問題があります.
Common Lispにはリードマクロがあるので, 中置記法を実現することができます.
本記事の内容はnurarihyonというパッケージで提供しているものです.
というわけで実装へ
今回は#%(&#8230;)というリードマクロを考えます. ここで&#8230;の部分に中置記法が可能なようにします.
ここで以下のような仕様にします

&#60;-, =で代入可能なようにする
@で配列の要素にアクセスする
複数の引数をとる場合は$でその区切りを指定する

では以下実装.

&#40;defun read-infix-sexp &#40;stream n char&#41;
  &#40;declare &#40;ignore n char&#41;&#41;
  &#40;let &#40;&#40;sexp &#40;read stream&#41;&#41;&#41;
    &#40;infix-&#62;prefix sexp&#41;&#41;&#41;
&#160;
&#40;defun infix-&#62;prefix/split$ &#40;arg &#38;optional &#40;buf nil&#41; &#40;result nil&#41;&#41;
  &#34;this function separete arg by the symbol `$'&#34;
  ;; first, just separate arg by $.
  ;; (1 $ 2 $ [...]]]></description>
			<content:encoded><![CDATA[<p>lispでは前置記法が用いられますが, 数学的なプログラムの実装はなかなか難しいという問題があります.<br />
Common Lispにはリードマクロがあるので, 中置記法を実現することができます.</p>
<p>本記事の内容は<a href="http://github.com/garaemon/nurarihyon">nurarihyon</a>というパッケージで提供しているものです.</p>
<p>というわけで実装へ</p>
<p>今回は#%(&#8230;)というリードマクロを考えます. ここで&#8230;の部分に中置記法が可能なようにします.</p>
<p>ここで以下のような仕様にします</p>
<ol>
<li>&lt;-, =で代入可能なようにする</li>
<li>@で配列の要素にアクセスする</li>
<li>複数の引数をとる場合は$でその区切りを指定する</li>
</ol>
<p>では以下実装.</p>

<div class="wp_syntax"><div class="code"><pre class="lisp lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">defun</span> read<span style="color: #66cc66;">-</span>infix<span style="color: #66cc66;">-</span>sexp <span style="color: #66cc66;">&#40;</span>stream n char<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>declare <span style="color: #66cc66;">&#40;</span>ignore n char<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>sexp <span style="color: #66cc66;">&#40;</span>read stream<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>infix<span style="color: #66cc66;">-&gt;</span>prefix sexp<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">defun</span> infix<span style="color: #66cc66;">-&gt;</span>prefix<span style="color: #66cc66;">/</span>split$ <span style="color: #66cc66;">&#40;</span>arg <span style="color: #66cc66;">&amp;</span>optional <span style="color: #66cc66;">&#40;</span>buf <span style="color: #b1b100;">nil</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>result <span style="color: #b1b100;">nil</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #ff0000;">&quot;this function separete arg by the symbol `$'&quot;</span>
  <span style="color: #808080; font-style: italic;">;; first, just separate arg by $.</span>
  <span style="color: #808080; font-style: italic;">;; (1 $ 2 $ 3) -&gt; ((1) (2) (3))</span>
  <span style="color: #808080; font-style: italic;">;; (1 + 2 $ 3) -&gt; ((1 + 2) (3))</span>
  <span style="color: #808080; font-style: italic;">;; (1 + 2 $ 3) -&gt; (+ 2 $ 3) (1)           ()</span>
  <span style="color: #808080; font-style: italic;">;;             -&gt; (2 $ 3)   (1 +)         ()</span>
  <span style="color: #808080; font-style: italic;">;;             -&gt; ($ 3)     (1 + 2)       ()</span>
  <span style="color: #808080; font-style: italic;">;;             -&gt; (3)       ()            ((1 + 2))</span>
  <span style="color: #808080; font-style: italic;">;;             -&gt; ()        (3)           ((1 + 2))</span>
  <span style="color: #808080; font-style: italic;">;;             -&gt;                         ((1 + 2) (3))</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null</span> arg<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">append</span> result <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> buf<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">and</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">symbolp</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> arg<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
              <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">eq</span> <span style="color: #66cc66;">&#40;</span>chimi:<span style="color: #555;">symbol</span><span style="color: #66cc66;">-&gt;</span>keyword <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> arg<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> :$<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
         <span style="color: #66cc66;">&#40;</span>infix<span style="color: #66cc66;">-&gt;</span>prefix<span style="color: #66cc66;">/</span>split$ <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> arg<span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">nil</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">append</span> result <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> buf<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>t
         <span style="color: #66cc66;">&#40;</span>infix<span style="color: #66cc66;">-&gt;</span>prefix<span style="color: #66cc66;">/</span>split$ <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> arg<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">append</span> buf <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> arg<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
                               result<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">defun</span> infix<span style="color: #66cc66;">-&gt;</span>prefix<span style="color: #66cc66;">/</span>function<span style="color: #66cc66;">-</span>call <span style="color: #66cc66;">&#40;</span>a b c<span style="color: #66cc66;">&#41;</span>
  <span style="color: #ff0000;">&quot;For example,
a := sin
b := (1)
c := another s-expression...&quot;</span>
  <span style="color: #808080; font-style: italic;">;; its deficult to estimate the number of arguments of b.</span>
  <span style="color: #808080; font-style: italic;">;; so we utilize another syntax `$' for separate arguments.</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>function<span style="color: #66cc66;">-</span>sexp
         <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> a <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">mapcar</span> #'infix<span style="color: #66cc66;">-&gt;</span>prefix <span style="color: #66cc66;">&#40;</span>infix<span style="color: #66cc66;">-&gt;</span>prefix<span style="color: #66cc66;">/</span>split$ b<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> c
        <span style="color: #808080; font-style: italic;">;; if there is c, we need to resolve c to operator and its args.</span>
        <span style="color: #66cc66;">&#40;</span>destructuring<span style="color: #66cc66;">-</span>bind <span style="color: #66cc66;">&#40;</span>operator <span style="color: #66cc66;">&amp;</span> args<span style="color: #66cc66;">&#41;</span> c
          <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> operator function<span style="color: #66cc66;">-</span>sexp <span style="color: #66cc66;">&#40;</span>infix<span style="color: #66cc66;">-&gt;</span>prefix args<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        function<span style="color: #66cc66;">-</span>sexp<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">defun</span> <span style="color: #66cc66;">%</span>infix<span style="color: #66cc66;">-&gt;</span>prefix <span style="color: #66cc66;">&#40;</span>sexp<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>destructuring<span style="color: #66cc66;">-</span>bind <span style="color: #66cc66;">&#40;</span>a <span style="color: #66cc66;">&amp;</span>optional b <span style="color: #66cc66;">&amp;</span>rest c<span style="color: #66cc66;">&#41;</span> sexp <span style="color: #808080; font-style: italic;">;(a b . c)</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">and</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">not</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null</span> b<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">listp</span> b<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>  <span style="color: #808080; font-style: italic;">;when b is list</span>
           <span style="color: #808080; font-style: italic;">;; here, we check sexp like (sin(x) ...)</span>
           <span style="color: #66cc66;">&#40;</span>infix<span style="color: #66cc66;">-&gt;</span>prefix<span style="color: #66cc66;">/</span>function<span style="color: #66cc66;">-</span>call a b c<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
          <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">and</span> a b c<span style="color: #66cc66;">&#41;</span>
           <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>bsym <span style="color: #66cc66;">&#40;</span>chimi:<span style="color: #555;">symbol</span><span style="color: #66cc66;">-&gt;</span>keyword b<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
             <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">case</span> bsym
               <span style="color: #66cc66;">&#40;</span>:@
                <span style="color: #808080; font-style: italic;">;; @ works as aref a @ (1 2) -&gt; (aref a 1 2)</span>
                <span style="color: #808080; font-style: italic;">;; a @ 1 -&gt; (aref a 1)</span>
                <span style="color: #808080; font-style: italic;">;; here we need to think aboud (cdr c) too...</span>
                <span style="color: #66cc66;">&#40;</span>destructuring<span style="color: #66cc66;">-</span>bind <span style="color: #66cc66;">&#40;</span>index <span style="color: #66cc66;">&amp;</span>rest args<span style="color: #66cc66;">&#41;</span> c
                  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>this<span style="color: #66cc66;">-</span>section
                         <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">listp</span> index<span style="color: #66cc66;">&#41;</span>
                             <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">append</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> '<span style="color: #b1b100;">aref</span> a<span style="color: #66cc66;">&#41;</span> index<span style="color: #66cc66;">&#41;</span>
                             <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">append</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> '<span style="color: #b1b100;">aref</span> a<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> index<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
                    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> args
                        <span style="color: #66cc66;">&#40;</span>destructuring<span style="color: #66cc66;">-</span>bind <span style="color: #66cc66;">&#40;</span>operator <span style="color: #66cc66;">&amp;</span>rest op<span style="color: #66cc66;">-</span>args<span style="color: #66cc66;">&#41;</span> args
                          <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #66cc66;">&#40;</span>infix<span style="color: #66cc66;">-&gt;</span>prefix operator<span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">;no need?</span>
                                this<span style="color: #66cc66;">-</span>section
                                <span style="color: #66cc66;">&#40;</span>infix<span style="color: #66cc66;">-&gt;</span>prefix op<span style="color: #66cc66;">-</span>args<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
                        this<span style="color: #66cc66;">-</span>section<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
               <span style="color: #66cc66;">&#40;</span>t
                <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #66cc66;">&#40;</span>infix<span style="color: #66cc66;">-&gt;</span>prefix b<span style="color: #66cc66;">&#41;</span>
                      <span style="color: #66cc66;">&#40;</span>infix<span style="color: #66cc66;">-&gt;</span>prefix a<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>infix<span style="color: #66cc66;">-&gt;</span>prefix c<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
          <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">and</span> b <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null</span> c<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">; no c, it means function appling like sin(x)</span>
           <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #66cc66;">&#40;</span>infix<span style="color: #66cc66;">-&gt;</span>prefix a<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>infix<span style="color: #66cc66;">-&gt;</span>prefix b<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
          <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">and</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null</span> b<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null</span> c<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>infix<span style="color: #66cc66;">-&gt;</span>prefix a<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">;only a</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">defun</span> infix<span style="color: #66cc66;">-&gt;</span>prefix <span style="color: #66cc66;">&#40;</span>sexp<span style="color: #66cc66;">&#41;</span>
  <span style="color: #ff0000;">&quot;This function converts an infix s-expression to a prefix s-expression.&quot;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">and</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">symbolp</span> sexp<span style="color: #66cc66;">&#41;</span>
          <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">or</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">eq</span> <span style="color: #66cc66;">&#40;</span>chimi:<span style="color: #555;">symbol</span><span style="color: #66cc66;">-&gt;</span>keyword sexp<span style="color: #66cc66;">&#41;</span> :<span style="color: #66cc66;">&lt;-</span><span style="color: #66cc66;">&#41;</span>
              <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">eq</span> <span style="color: #66cc66;">&#40;</span>chimi:<span style="color: #555;">symbol</span><span style="color: #66cc66;">-&gt;</span>keyword sexp<span style="color: #66cc66;">&#41;</span> :<span style="color: #66cc66;">=</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
     '<span style="color: #b1b100;">setf</span><span style="color: #66cc66;">&#41;</span>                              <span style="color: #808080; font-style: italic;">;setf alias</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">listp</span> sexp<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">%</span>infix<span style="color: #66cc66;">-&gt;</span>prefix sexp<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">;we need to convert</span>
    <span style="color: #66cc66;">&#40;</span>t sexp<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>                           <span style="color: #808080; font-style: italic;">;may be literal</span></pre></div></div>

<p>ここで, chimi:keyword->symbolは以下のような実装です</p>

<div class="wp_syntax"><div class="code"><pre class="lisp lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">defun</span> symbol<span style="color: #66cc66;">-&gt;</span>keyword <span style="color: #66cc66;">&#40;</span>sym<span style="color: #66cc66;">&#41;</span>
  <span style="color: #ff0000;">&quot;convert a symbol to keyword.
  ;;; (symbol-&gt;keyword 'hoge) -&gt; :hoge&quot;</span>
  <span style="color: #66cc66;">&#40;</span>declare <span style="color: #66cc66;">&#40;</span>type <span style="color: #b1b100;">symbol</span> sym<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">intern</span> <span style="color: #66cc66;">&#40;</span>string sym<span style="color: #66cc66;">&#41;</span> :<span style="color: #555;">keyword</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>これを使うと中置記法ができます.</p>

<div class="wp_syntax"><div class="code"><pre class="lisp lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>set<span style="color: #66cc66;">-</span>dispatch<span style="color: #66cc66;">-</span>macro<span style="color: #66cc66;">-</span>character #\# #\<span style="color: #66cc66;">%</span> 'read<span style="color: #66cc66;">-</span>infix<span style="color: #66cc66;">-</span>sexp<span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>defvar a 0<span style="color: #66cc66;">&#41;</span>
#<span style="color: #66cc66;">%</span><span style="color: #66cc66;">&#40;</span>a <span style="color: #66cc66;">&lt;-</span> <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">+</span> atan<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1.0</span> $ <span style="color: #cc66cc;">1.0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">;; expand to (SETF A (+ 1 (+ 2 (ATAN 1.0 1.0)))) a = 3.7853982</span>
<span style="color: #66cc66;">&#40;</span>defvar b <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span><span style="color: #b1b100;">array</span> <span style="color: #cc66cc;">3</span> :<span style="color: #555;">initial</span><span style="color: #66cc66;">-</span>element <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
#<span style="color: #66cc66;">%</span><span style="color: #66cc66;">&#40;</span>b @ <span style="color: #66cc66;">&#40;</span>0<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">100.0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">;; =&gt; 103.0 expanded as (+ (AREF B 0) 100.0)</span></pre></div></div>

<p>以外とみにくいですねw</p>
]]></content:encoded>
			<wfw:commentRss>http://garaemon.net/wordpress/?feed=rss2&amp;p=225</wfw:commentRss>
		</item>
		<item>
		<title>snow leopardでnurikabe</title>
		<link>http://garaemon.net/wordpress/?p=217</link>
		<comments>http://garaemon.net/wordpress/?p=217#comments</comments>
		<pubDate>Sun, 07 Mar 2010 19:10:32 +0000</pubDate>
		<dc:creator>garaemon</dc:creator>
		
		<category><![CDATA[common lisp]]></category>

		<category><![CDATA[未分類]]></category>

		<category><![CDATA[nurikabe]]></category>

		<guid isPermaLink="false">http://garaemon.net/wordpress/?p=217</guid>
		<description><![CDATA[このあいだのエントリーのpatchによってsnow leopard x sbclでnurikabeが動くようになりました.
nurikabeは私が作っているGUIライブラリです.
ソースコードはここから入手できます.

ちなみに, これのソースは以下のような感じです.

&#40;require :nurikabe&#41;
&#160;
&#40;defvar *manager* &#40;nk:init-gui :loggingp t :threadingp t&#41;&#41;
&#40;defvar *win* &#40;nk:make-window :width 300 :height 200
                              :background :white
       [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://garaemon.net/wordpress/?p=205">このあいだのエントリー</a>のpatchによってsnow leopard x sbclでnurikabeが動くようになりました.</p>
<p>nurikabeは私が作っているGUIライブラリです.</p>
<p>ソースコードは<a href="http://github.com/garaemon/nurikabe">ここ</a>から入手できます.</p>
<p><a href="http://garaemon.net/wordpress/wp-content/uploads/2010/03/nurikabe-darwin.png"><img class="alignnone size-medium wp-image-218" title="nurikabe-darwin" src="http://garaemon.net/wordpress/wp-content/uploads/2010/03/nurikabe-darwin-300x187.png" alt="" width="300" height="187" /></a></p>
<p>ちなみに, これのソースは以下のような感じです.</p>

<div class="wp_syntax"><div class="code"><pre class="lisp lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>require :<span style="color: #555;">nurikabe</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span>defvar <span style="color: #66cc66;">*</span>manager<span style="color: #66cc66;">*</span> <span style="color: #66cc66;">&#40;</span>nk:<span style="color: #555;">init</span><span style="color: #66cc66;">-</span>gui :<span style="color: #555;">loggingp</span> t :<span style="color: #555;">threadingp</span> t<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>defvar <span style="color: #66cc66;">*</span>win<span style="color: #66cc66;">*</span> <span style="color: #66cc66;">&#40;</span>nk:<span style="color: #555;">make</span><span style="color: #66cc66;">-</span>window :<span style="color: #555;">width</span> <span style="color: #cc66cc;">300</span> :<span style="color: #555;">height</span> <span style="color: #cc66cc;">200</span>
                              :<span style="color: #555;">background</span> :<span style="color: #555;">white</span>
                              :<span style="color: #b1b100;">name</span> <span style="color: #ff0000;">&quot;test window&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>defvar <span style="color: #66cc66;">*</span>widget1<span style="color: #66cc66;">*</span> <span style="color: #66cc66;">&#40;</span>nk:<span style="color: #555;">make</span><span style="color: #66cc66;">-</span>widget 'nk:<span style="color: #66cc66;">&lt;</span>image<span style="color: #66cc66;">-</span>widget<span style="color: #66cc66;">&gt;</span>
                                 :<span style="color: #555;">x</span> 0 :<span style="color: #555;">y</span> 0
                                 :<span style="color: #555;">width</span> <span style="color: #cc66cc;">150</span> :<span style="color: #555;">height</span> <span style="color: #cc66cc;">100</span>
                                 :<span style="color: #555;">parent</span> <span style="color: #66cc66;">*</span>win<span style="color: #66cc66;">*</span>
                                 :<span style="color: #555;">background</span> :<span style="color: #555;">blue</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>defvar <span style="color: #66cc66;">*</span>widget2<span style="color: #66cc66;">*</span> <span style="color: #66cc66;">&#40;</span>nk:<span style="color: #555;">make</span><span style="color: #66cc66;">-</span>widget 'nk:<span style="color: #66cc66;">&lt;</span>image<span style="color: #66cc66;">-</span>widget<span style="color: #66cc66;">&gt;</span>
                                 :<span style="color: #555;">x</span> <span style="color: #cc66cc;">150</span> :<span style="color: #555;">y</span> 0
                                 :<span style="color: #555;">width</span> <span style="color: #cc66cc;">150</span> :<span style="color: #555;">height</span> <span style="color: #cc66cc;">100</span>
                                 :<span style="color: #555;">parent</span> <span style="color: #66cc66;">*</span>win<span style="color: #66cc66;">*</span>
                                 :<span style="color: #555;">background</span> :<span style="color: #555;">green</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>defvar <span style="color: #66cc66;">*</span>widget3<span style="color: #66cc66;">*</span> <span style="color: #66cc66;">&#40;</span>nk:<span style="color: #555;">make</span><span style="color: #66cc66;">-</span>widget 'nk:<span style="color: #66cc66;">&lt;</span>image<span style="color: #66cc66;">-</span>widget<span style="color: #66cc66;">&gt;</span>
                                  :<span style="color: #555;">x</span> 0 :<span style="color: #555;">y</span> <span style="color: #cc66cc;">100</span>
                                  :<span style="color: #555;">width</span> <span style="color: #cc66cc;">150</span> :<span style="color: #555;">height</span> <span style="color: #cc66cc;">100</span>
                                  :<span style="color: #555;">parent</span> <span style="color: #66cc66;">*</span>win<span style="color: #66cc66;">*</span>
                                  :<span style="color: #555;">background</span> :<span style="color: #555;">red</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>defvar <span style="color: #66cc66;">*</span>widget4<span style="color: #66cc66;">*</span> <span style="color: #66cc66;">&#40;</span>nk:<span style="color: #555;">make</span><span style="color: #66cc66;">-</span>widget 'nk:<span style="color: #66cc66;">&lt;</span>image<span style="color: #66cc66;">-</span>widget<span style="color: #66cc66;">&gt;</span>
                                  :<span style="color: #555;">x</span> <span style="color: #cc66cc;">150</span> :<span style="color: #555;">y</span> <span style="color: #cc66cc;">100</span>
                                  :<span style="color: #555;">width</span> <span style="color: #cc66cc;">150</span> :<span style="color: #555;">height</span> <span style="color: #cc66cc;">100</span>
                                  :<span style="color: #555;">parent</span> <span style="color: #66cc66;">*</span>win<span style="color: #66cc66;">*</span>
                                  :<span style="color: #555;">background</span> :<span style="color: #555;">white</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span>nk:<span style="color: #555;">draw</span><span style="color: #66cc66;">-</span>line <span style="color: #66cc66;">&#40;</span>nk:<span style="color: #555;">image</span><span style="color: #66cc66;">-</span>of <span style="color: #66cc66;">*</span>widget1<span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#41;</span> 0 0 <span style="color: #cc66cc;">100</span> <span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>nk:<span style="color: #555;">draw</span><span style="color: #66cc66;">-</span>circle <span style="color: #66cc66;">&#40;</span>nk:<span style="color: #555;">image</span><span style="color: #66cc66;">-</span>of <span style="color: #66cc66;">*</span>widget2<span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">75</span> <span style="color: #cc66cc;">50</span> <span style="color: #cc66cc;">30</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>nk:<span style="color: #555;">draw</span><span style="color: #66cc66;">-</span>string <span style="color: #66cc66;">&#40;</span>nk:<span style="color: #555;">image</span><span style="color: #66cc66;">-</span>of <span style="color: #66cc66;">*</span>widget3<span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#41;</span> <span style="color: #ff0000;">&quot;NURIKABE&quot;</span> 0 0 :<span style="color: #555;">font</span><span style="color: #66cc66;">-</span>size <span style="color: #cc66cc;">30</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>nk:<span style="color: #555;">draw</span><span style="color: #66cc66;">-</span>rectangle <span style="color: #66cc66;">&#40;</span>nk:<span style="color: #555;">image</span><span style="color: #66cc66;">-</span>of <span style="color: #66cc66;">*</span>widget4<span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#41;</span> 0 0 <span style="color: #cc66cc;">100</span> <span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span>nk:<span style="color: #555;">render</span><span style="color: #66cc66;">-</span>widgets <span style="color: #66cc66;">*</span>win<span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://garaemon.net/wordpress/?feed=rss2&amp;p=217</wfw:commentRss>
		</item>
		<item>
		<title>snow leopard(x86-64)のsbclで普通のdlopenを利用する</title>
		<link>http://garaemon.net/wordpress/?p=205</link>
		<comments>http://garaemon.net/wordpress/?p=205#comments</comments>
		<pubDate>Sat, 06 Mar 2010 20:09:34 +0000</pubDate>
		<dc:creator>garaemon</dc:creator>
		
		<category><![CDATA[common lisp]]></category>

		<category><![CDATA[sbcl]]></category>

		<guid isPermaLink="false">http://garaemon.net/wordpress/?p=205</guid>
		<description><![CDATA[snow leopard上のsbclは大体うまく動くのですが, FFIでCの関数を呼びだしはじめると, 結構うまくいかないことがあります.
snow leopard上でsbclを使ってるひとは

&#40;load-shared-object &#34;/usr/X11R6/lib/libX11.dylib&#34;&#41;
&#40;load-shared-object &#34;/usr/X11R6/lib/libGL.dylib&#34;&#41;

とすると, プロセスが帰ってこなくなることが確認できます.
これは, darwinにおいて, sbclは普通のdlopenを利用してないことが原因だと思われます.
これはdarwinは標準的なELFではなく, バイナリがMach-o形式のため, dlopenを&#60;mach-o/dyld.h&#62;を利用してエミュレートしているのが原因だと思われます(sbcl/src/runtime/darwin-dlshim.c).
しかし, よく考えると, mac os xのgccは普通にdlopenを提供してくれているので, そっちを使うほうが良いです.
その辺のことがPHPまわりで議論されてるようです. ruby 1.8.6だloadできないけど, 1.8.7だとできるみたいな話もあるらしいです (url紛失).
以下あやしいところもありますが, このためのパッチになります.
利用してるのはcvsの最新のものです(1.0.36.13).
Index: sb-bsd-sockets/defpackage.lisp
===================================================================
RCS file: /cvsroot/sbcl/sbcl/contrib/sb-bsd-sockets/defpackage.lisp,v
retrieving revision 1.14
diff -r1.14 defpackage.lisp
76a77,79
&#62;
&#62; #+darwin
&#62; (load-shared-object "/usr/lib/libc.dylib")
Index: contrib/sb-posix/defpackage.lisp
===================================================================
RCS file: /cvsroot/sbcl/sbcl/contrib/sb-posix/defpackage.lisp,v
retrieving revision 1.16
diff -r1.16 defpackage.lisp
26a27,29
&#62;
&#62; #+darwin
&#62; (sb-alien:load-shared-object "/usr/lib/libc.dylib")
Index: src/code/unix-foreign-load.lisp
===================================================================
RCS file: /cvsroot/sbcl/sbcl/src/code/unix-foreign-load.lisp,v
retrieving revision 1.1
diff -r1.1 unix-foreign-load.lisp
34a35
&#62;
69c70,71
&#60;   (let* ((extern (extern-alien-name symbol))
---
&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>snow leopard上のsbclは大体うまく動くのですが, FFIでCの関数を呼びだしはじめると, 結構うまくいかないことがあります.</p>
<p>snow leopard上でsbclを使ってるひとは</p>

<div class="wp_syntax"><div class="code"><pre class="lisp lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>load<span style="color: #66cc66;">-</span>shared<span style="color: #66cc66;">-</span>object <span style="color: #ff0000;">&quot;/usr/X11R6/lib/libX11.dylib&quot;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>load<span style="color: #66cc66;">-</span>shared<span style="color: #66cc66;">-</span>object <span style="color: #ff0000;">&quot;/usr/X11R6/lib/libGL.dylib&quot;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>とすると, プロセスが帰ってこなくなることが確認できます.</p>
<p>これは, darwinにおいて, sbclは普通のdlopenを利用してないことが原因だと思われます.</p>
<p>これはdarwinは標準的なELFではなく, バイナリがMach-o形式のため, dlopenを&lt;mach-o/dyld.h&gt;を利用してエミュレートしているのが原因だと思われます(sbcl/src/runtime/darwin-dlshim.c).</p>
<p>しかし, よく考えると, mac os xのgccは普通にdlopenを提供してくれているので, そっちを使うほうが良いです.</p>
<p>その辺のことが<a href="http://www.mail-archive.com/php-bugs@lists.php.net/msg123875.html">PHPまわり</a>で議論されてるようです. ruby 1.8.6だloadできないけど, 1.8.7だとできるみたいな話もあるらしいです (url紛失).</p>
<p>以下あやしいところもありますが, このためのパッチになります.</p>
<p>利用してるのはcvsの最新のものです(1.0.36.13).</p>
<pre>Index: sb-bsd-sockets/defpackage.lisp
===================================================================
RCS file: /cvsroot/sbcl/sbcl/contrib/sb-bsd-sockets/defpackage.lisp,v
retrieving revision 1.14
diff -r1.14 defpackage.lisp
76a77,79
&gt;
&gt; #+darwin
&gt; (load-shared-object "/usr/lib/libc.dylib")</pre>
<pre>Index: contrib/sb-posix/defpackage.lisp
===================================================================
RCS file: /cvsroot/sbcl/sbcl/contrib/sb-posix/defpackage.lisp,v
retrieving revision 1.16
diff -r1.16 defpackage.lisp
26a27,29
&gt;
&gt; #+darwin
&gt; (sb-alien:load-shared-object "/usr/lib/libc.dylib")</pre>
<pre>Index: src/code/unix-foreign-load.lisp
===================================================================
RCS file: /cvsroot/sbcl/sbcl/src/code/unix-foreign-load.lisp,v
retrieving revision 1.1
diff -r1.1 unix-foreign-load.lisp
34a35
&gt;
69c70,71
&lt;   (let* ((extern (extern-alien-name symbol))
---
&gt;   (let* ((extern #!-mach-o (extern-alien-name symbol)
&gt;                  #!+mach-o (coerce symbol 'base-string))</pre>
<pre>Index: src/runtime/Config.x86-64-darwin
===================================================================
RCS file: /cvsroot/sbcl/sbcl/src/runtime/Config.x86-64-darwin,v
retrieving revision 1.4
diff -r1.4 Config.x86-64-darwin
13,14c13,15
&lt; LINKFLAGS += -mmacosx-version-min=10.4
&lt; OS_SRC = bsd-os.c x86-64-bsd-os.c darwin-os.c x86-64-darwin-os.c darwin-dlshim.c darwin-langinfo.c
---
&gt; LINKFLAGS += -mmacosx-version-min=10.4 -ldl
&gt; #OS_SRC = bsd-os.c x86-64-bsd-os.c darwin-os.c x86-64-darwin-os.c darwin-dlshim.c darwin-langinfo.c
&gt; OS_SRC = bsd-os.c x86-64-bsd-os.c darwin-os.c  darwin-langinfo.c
Index: src/runtime/Config.x86-64-darwin9+
===================================================================
RCS file: /cvsroot/sbcl/sbcl/src/runtime/Config.x86-64-darwin9+,v
retrieving revision 1.1
diff -r1.1 Config.x86-64-darwin9+
14c14,15
&lt; OS_SRC = bsd-os.c x86-64-bsd-os.c darwin-os.c x86-64-darwin-os.c darwin-dlshim.c darwin-langinfo.c
---
&gt; #OS_SRC = bsd-os.c x86-64-bsd-os.c darwin-os.c x86-64-darwin-os.c darwin-dlshim.c darwin-langinfo.c
&gt; OS_SRC = bsd-os.c x86-64-bsd-os.c darwin-os.c x86-64-darwin-os.c darwin-langinfo.c</pre>
<pre>Index: src/runtime/x86-64-darwin-os.c
===================================================================
RCS file: /cvsroot/sbcl/sbcl/src/runtime/x86-64-darwin-os.c,v
retrieving revision 1.14
diff -r1.14 x86-64-darwin-os.c
25a26,29
&gt; // added by garaemon
&gt; #include &lt;dlfcn.h&gt;
&gt; #include &lt;sys/wait.h&gt;
&gt; #include &lt;mach-o/dyld.h&gt;
688a693,697
&gt; //dummy function
&gt; /* void darwin_waitpid(int pid, int* status, int options) { */
&gt; /*     waitpid(pid, status, options); */
&gt; /* } */
&gt;
Index: tools-for-build/ldso-stubs.lisp
===================================================================
RCS file: /cvsroot/sbcl/sbcl/tools-for-build/ldso-stubs.lisp,v
retrieving revision 1.24
diff -r1.24 ldso-stubs.lisp
327,331c327,337
&lt;                  #!-darwin
&lt;                  '("dlclose"
&lt;                    "dlerror"
&lt;                    "dlopen"
&lt;                    "dlsym")
---
&gt;                  ;; #!-darwin
&gt;                   '("dlclose"
&gt;                     "dlerror"
&gt;                     "dlopen"
&gt;                     "dlsym")
&gt;                   #!+darwin
&gt;                   '("waitpid"
&gt;                     "ptsname"
&gt;                     "grantpt"
&gt;                     "unlockpt")
&gt;                   ;; for bsd-sockets...?</pre>
<p>sb-posixとsb-bsd-socketsでlibc.dylibをloadしなくてはいけなくなったのは理由がよくわかりません&#8230; -lcはつけてるはずですが</p>
<p>追記:</p>
<p>バグレポートしておいた</p>
<p><a href="https://bugs.launchpad.net/sbcl/+bug/533470">https://bugs.launchpad.net/sbcl/+bug/533470</a></p>
<p>追記2:</p>
<p>slimeでthreadを利用してる場合は, load-shared-objectでハングする可能性があります. dlopenはmmapとかしてそうだからそのへんかな?</p>
<p>以下解決のためのpatch</p>
<pre>Index: swank-sbcl.lisp
===================================================================
RCS file: /project/slime/cvsroot/slime/swank-sbcl.lisp,v
retrieving revision 1.269
diff -r1.269 swank-sbcl.lisp
71c71
&lt;     ((member :sb-thread *features*) :spawn)
---
&gt;     ;;((member :sb-thread *features*) :spawn)
1345c1345
&lt; #+(and sb-thread
---
&gt; #+(and nil sb-thread</pre>
]]></content:encoded>
			<wfw:commentRss>http://garaemon.net/wordpress/?feed=rss2&amp;p=205</wfw:commentRss>
		</item>
		<item>
		<title>第一回schemeコードバトン(garaemon fitst time編)</title>
		<link>http://garaemon.net/wordpress/?p=200</link>
		<comments>http://garaemon.net/wordpress/?p=200#comments</comments>
		<pubDate>Mon, 11 Jan 2010 08:15:12 +0000</pubDate>
		<dc:creator>garaemon</dc:creator>
		
		<category><![CDATA[scheme]]></category>

		<category><![CDATA[shibuya.lisp]]></category>

		<guid isPermaLink="false">http://garaemon.net/wordpress/?p=200</guid>
		<description><![CDATA[higeponさんの呼びかけで, 次のshibuya.lispにむけてschemeのコードバトンをやろうということになりました.
参考
higeponさん-&#62;yadokarielectriさん-&#62;garaem [...]]]></description>
			<content:encoded><![CDATA[<p>higeponさんの呼びかけで, 次のshibuya.lispにむけてschemeのコードバトンをやろうということになりました.</p>
<p><a href="http://d.hatena.ne.jp/higepon/20100110/1263121990">参考</a></p>
<p>higeponさん-&gt;yadokarielectriさん-&gt;garaemonとバトンがまわってきたので, 少しいじってみました.</p>
<p>修論がやばいのですが, <a href="http://twitter.com/higepon/status/7588049091">higeponさん曰く</a>「修論よりも大事なものがある」らしいのでやってみる.</p>
<p>僕のコードは<a href="http://gist.github.com/274082">ここ</a>から見れます.</p>
<p>yadokarielectriさんはgauche用に書いてましたが, 良い機会なのでmoshに触れることを個人的な目的に.</p>
<p>moshのbuildはsnow leopardでやりかたがよくからんかった(GMPまわり)ので, linux(ubuntu 9.10)でやりました.</p>
<p>moshは<a href="http://code.google.com/p/mosh-scheme/">ここ</a>からおとせます.</p>
<p>ubuntuではgmp3とか入れれば, 普通に./configure, make, make installができますね.</p>
<p>で, 変更箇所はsrfi 37を使って, オプションを渡せるようにしてみました.</p>
<p>srfi 37は自由度が高いですが, まぁ使いにくいので, ちょっとだけ使いやすくしてあげる(自由度は下がるけど).</p>

<div class="wp_syntax"><div class="code"><pre class="lisp lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>define<span style="color: #66cc66;">-</span>syntax with<span style="color: #66cc66;">-</span>parsed<span style="color: #66cc66;">-</span>options
  <span style="color: #66cc66;">&#40;</span>syntax<span style="color: #66cc66;">-</span>rules <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>_ <span style="color: #66cc66;">&#40;</span>params ...<span style="color: #66cc66;">&#41;</span> options arg bodies ...<span style="color: #66cc66;">&#41;</span>
     <span style="color: #66cc66;">&#40;</span>receive <span style="color: #66cc66;">&#40;</span>params ...<span style="color: #66cc66;">&#41;</span>
       <span style="color: #66cc66;">&#40;</span>parse<span style="color: #66cc66;">-</span>args arg options<span style="color: #66cc66;">&#41;</span>
       bodies ...<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>みたいなマクロを作ってあげる. lispらしい抽象化ですね. こういう構文は大好きです.でも方向性はCommon Lispっぽいかも. schemeだとcall-with-xxxとしそうだなぁ.</p>
<p>optionsはconfiguration listでこんなかんじ.</p>

<div class="wp_syntax"><div class="code"><pre class="lisp lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">*</span>arg<span style="color: #66cc66;">-</span>options<span style="color: #66cc66;">*</span>
  '<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>#\d <span style="color: #ff0000;">&quot;debug&quot;</span><span style="color: #66cc66;">&#41;</span>                      <span style="color: #808080; font-style: italic;">;match string or character</span>
     #f                                 <span style="color: #808080; font-style: italic;">;default value</span>
     #f<span style="color: #66cc66;">&#41;</span>                                <span style="color: #808080; font-style: italic;">;take value or not</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>#\v <span style="color: #ff0000;">&quot;verbose&quot;</span><span style="color: #66cc66;">&#41;</span>
     #f
     #f<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>#\f <span style="color: #ff0000;">&quot;dict-file&quot;</span><span style="color: #66cc66;">&#41;</span>
     <span style="color: #ff0000;">&quot;words.txt&quot;</span>
     #t<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>#\h <span style="color: #ff0000;">&quot;help&quot;</span><span style="color: #66cc66;">&#41;</span>
      #f
      #f<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>まぁ詳しいとこはコードを見てください.</p>
<p>使いかたは</p>
<pre>% mosh scheme_baton.scm -h
% mosh scheme_baton.scm -f=words.txt</pre>
<p>みたいな感じに変更されてます.</p>
<p>schemeはGaucheをさわってたことがあるけど, 結構Gaucheの独自拡張を便利に使ってたので, R6RS内で書くのは結構勝手がちがうなー, という感想.</p>
<p>もっとなおした方が良いところもあると思いますが, まぁこれくらいで勘弁ください.</p>
<p>しかし, メインループを再帰で書くのはちょっと抵抗があるなぁw</p>
<p>せっかくなのでcall/ccは残しました</p>
<p>次はyshigeruさんにわたします!</p>
]]></content:encoded>
			<wfw:commentRss>http://garaemon.net/wordpress/?feed=rss2&amp;p=200</wfw:commentRss>
		</item>
		<item>
		<title>iPhone OS 3.1.2(JB) + XCode 3.2.1でアプリケーション開発</title>
		<link>http://garaemon.net/wordpress/?p=192</link>
		<comments>http://garaemon.net/wordpress/?p=192#comments</comments>
		<pubDate>Thu, 05 Nov 2009 08:11:19 +0000</pubDate>
		<dc:creator>garaemon</dc:creator>
		
		<category><![CDATA[iPhone]]></category>

		<category><![CDATA[os x]]></category>

		<guid isPermaLink="false">http://garaemon.net/wordpress/?p=192</guid>
		<description><![CDATA[これは夢のはなしです.
以下のようにすると, jailbreak済のiPhone OS 3.1.2とXCode 3.2.1でアプリのがやりとりできる, という夢をみました.
検証環境
OS: Snow Leopard
X [...]]]></description>
			<content:encoded><![CDATA[<p>これは夢のはなしです.</p>
<p>以下のようにすると, jailbreak済のiPhone OS 3.1.2とXCode 3.2.1でアプリのがやりとりできる, という夢をみました.</p>
<div>検証環境</div>
<pre>OS: Snow Leopard
XCode: 3.2.1
iPhone: 3.1.2</pre>
<h4>まず, キーチェーンアクセスで証明書を作成</h4>
<div>証明書アシスタンス &gt; 証明書を作成.</div>
<div>名前はiPhone Developer</div>
<div>コード署名で作成する</div>
<div>デフォルトを無効化するのを忘れずに.</div>
<div>iPhone Developerの証明書をダブルクリックして,</div>
<div>信頼 &gt; この証明書を使用するとき</div>
<div>で常に信頼する</div>
<h4>Info.plistの編集</h4>
<div>次に</div>
<div><tt>/Developer/Platforms/iPhoneOS.platform/Info.plist</tt>.を編集</div>
<div>46, 79行目のXCiPhoneOSCodeSignContextをXCCodeSignContextに置換.</div>
<div>参考: <a href="http://networkpx.blogspot.com/2009/09/compiling-iphoneos-31-apps-with-xcode.html">http://networkpx.blogspot.com/2009/09/compiling-iphoneos-31-apps-with-xcode.html</a></div>
<h4>サンプルコードの確保</h4>
<p>&lt;<a title="http://developer.apple.com/iphone/library/samplecode/HelloWorld_iPhone/index.html" href="http://developer.apple.com/iphone/library/samplecode/HelloWorld_iPhone/index.html">http://developer.apple.com/iphone/library/samplecode/HelloWorld_iPhone/index.html</a></p>
<div>
<div>ここからHelloWorldをDL</div>
<div>適当に展開して, .xcodeprojをダブルクリック.</div>
<div>プロジェクトを設定する.</div>
<div>左上のHelloWorldを選択してCommand-i, ビルドタブを選択.</div>
</div>
<div>アーキテクチャ &gt; ベースSDKをiPhoneデバイス3.1.2にする.</div>
<div>そうすると勝手にarmが選択される</div>
<div>とりあえずreleaseもdebugもそのようにする.</div>
<div>これでビルドすると, キーチェーンのnotificationがでるので常に許可を選択.</div>
<div>ビルドできた!</div>
<h4>iPhone側の設定</h4>
<div><a href="http://www39.atwiki.jp/iphonedev/pages/12.html#id_2e8f2a42">http://www39.atwiki.jp/iphonedev/pages/12.html#id_2e8f2a42</a> に従って</div>
<div>CydiaのManage &gt; Sources &gt; Edit &gt; Addから</div>
<div>iPhone OS 2.x系列なら</div>
<div>Cydiaのレポジトリに以下のURLを追加</div>
<div>http://www.iphone.org.hk/apt/</div>
<div>CydiaからMobileInstalttion Patchをインストール</div>
<div>iPhone OS 3.x系列なら</div>
<div>以下を追加</div>
<div>http://cydia.hackulo.us/</div>
<div>AppSync for OS 3.1をイストール</div>
<div>参考: http://www.iphonedownloadblog.com/2009/09/17/mobileinstallation-iphone-3-1/</div>
<h4>macにiPhoneを接続して転送</h4>
<p>macにiPhoneを接続</p>
<p>XCodeのウィンドウ &gt; オーガナイザ</p>
<p>DevicesからiPhone選んで, Use for Developmentをクリック</p>
<p>XCodeでビルドして実行を行うと, GDB上での起動は失敗するけど, 転送できる.</p>
]]></content:encoded>
			<wfw:commentRss>http://garaemon.net/wordpress/?feed=rss2&amp;p=192</wfw:commentRss>
		</item>
		<item>
		<title>CLで幾何モデルライブラリを作ろう(5)</title>
		<link>http://garaemon.net/wordpress/?p=182</link>
		<comments>http://garaemon.net/wordpress/?p=182#comments</comments>
		<pubDate>Sat, 17 Oct 2009 18:03:11 +0000</pubDate>
		<dc:creator>garaemon</dc:creator>
		
		<category><![CDATA[common lisp]]></category>

		<category><![CDATA[komainu]]></category>

		<guid isPermaLink="false">http://garaemon.net/wordpress/?p=182</guid>
		<description><![CDATA[githubにてコードを追加しました
https://github.com/garaemon
仕様変更, というかこれからガシガシ変更していきます.
導入方法や動作環境はまた今度.
ドキュメンテーションもそのうち作ります [...]]]></description>
			<content:encoded><![CDATA[<p>githubにてコードを追加しました</p>
<p><a href="http://github.com/garaemon">https://github.com/garaemon</a></p>
<p>仕様変更, というかこれからガシガシ変更していきます.</p>
<p>導入方法や動作環境はまた今度.</p>
<p>ドキュメンテーションもそのうち作ります.</p>
<p>あと, ちょっと攻殻機動隊っぽいデモをつくりました. REPLとの連携もみれます.</p>
<p><a href="http://garaemon.net/movies/2009-10-14_0144.swf">komainu sample</a></p>
<p>追記</p>
<p>動作環境について.</p>
<p>SBCLでかつマルチスレッドがつかえる環境でしか動きません.</p>
<p>というわけでlinuxでしかうごきません.</p>
<p>macはsnow leopardではOpenGLのdylibのffiがうまくいきません.</p>
<p>環境構築は<a href="http://tips.lisp-users.org/common-lisp/index.cgi?clbuildを使う">clbuild</a>を使うと楽.<br />
以下は動作確認してないので注意</p>
<p>my-projectsに以下を追加</p>

<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">lisp-unit get_git git://repo.or.cz/lisp-unit.git
cl-interpol get_ediware
&nbsp;
chimi get_git git://github.com/garaemon/chimi.git
nurarihyon get_git git://github.com/garaemon/nurarihyon.git
nurikabe get_git git://github.com/garaemon/nurikabe.git
komainu get_git git://github.com/garaemon/komainu.git
yasha get_git git://github.com/garaemon/yasha.git
tengu get_git git://github.com/garaemon/tengu.git
clyax get_git git://github.com/garaemon/clyax.git</pre></div></div>

<p>さらにdependencyに以下を追加</p>

<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">cl-interpol cl-unicode
chimi iterate cl-interpol log5 cl-ppcre alexandria cffi
nurarihyon chimi
nurikabe chimi cl-vectors iterate cffi clyax nurarihyon alexandria
komainu chimi nurarihyon nurikabe iterate
yasha chimi usocket
tengu chimi iterate
clyax cffi chimi</pre></div></div>

<div><span style="font-family: 'Courier New', monospace; font-size: small;"><span><br />
</span></span></div>
]]></content:encoded>
			<wfw:commentRss>http://garaemon.net/wordpress/?feed=rss2&amp;p=182</wfw:commentRss>
		</item>
		<item>
		<title>CLで幾何モデルライブラリを作ろう(4)</title>
		<link>http://garaemon.net/wordpress/?p=176</link>
		<comments>http://garaemon.net/wordpress/?p=176#comments</comments>
		<pubDate>Fri, 09 Oct 2009 06:47:23 +0000</pubDate>
		<dc:creator>garaemon</dc:creator>
		
		<category><![CDATA[common lisp]]></category>

		<category><![CDATA[komainu]]></category>

		<guid isPermaLink="false">http://garaemon.net/wordpress/?p=176</guid>
		<description><![CDATA[透明なobjectをサポート.
これに必要なコードは以下

&#40;require :komainu&#41;
&#40;use-package :komainu&#41;
&#40;use-package :nurarihyon&#41;
&#40;use-package :nurikabe&#41;
&#40;defvar *viewer* &#40;make-komainu-viewer :loggingp nil&#41;&#41;
&#40;defvar *a* &#40;make-cube 100.0 100.0 100.0 :color :red&#41;&#41;
&#40;defvar *b* &#40;make-cube 200.0 200.0 200.0 :color :green&#41;&#41;
&#40;transparent *b* 0.5&#41;
&#40;objects *viewer* &#40;list *A* *B* *world-coords*&#41;&#41;



]]></description>
			<content:encoded><![CDATA[<p>透明なobjectをサポート.</p>
<p><div id="attachment_177" class="wp-caption alignnone" style="width: 299px"><a href="http://garaemon.net/wordpress/wp-content/uploads/2009/10/transparent.png"><img class="size-medium wp-image-177" title="transparent" src="http://garaemon.net/wordpress/wp-content/uploads/2009/10/transparent-289x300.png" alt="transparent object" width="289" height="300" /></a><p class="wp-caption-text">transparent object</p></div></p>
<p>これに必要なコードは以下</p>

<div class="wp_syntax"><div class="code"><pre class="lisp lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>require :<span style="color: #555;">komainu</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>use<span style="color: #66cc66;">-</span>package :<span style="color: #555;">komainu</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>use<span style="color: #66cc66;">-</span>package :<span style="color: #555;">nurarihyon</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>use<span style="color: #66cc66;">-</span>package :<span style="color: #555;">nurikabe</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>defvar <span style="color: #66cc66;">*</span>viewer<span style="color: #66cc66;">*</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>komainu<span style="color: #66cc66;">-</span>viewer :<span style="color: #555;">loggingp</span> <span style="color: #b1b100;">nil</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>defvar <span style="color: #66cc66;">*</span>a<span style="color: #66cc66;">*</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>cube <span style="color: #cc66cc;">100.0</span> <span style="color: #cc66cc;">100.0</span> <span style="color: #cc66cc;">100.0</span> :<span style="color: #555;">color</span> :<span style="color: #555;">red</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>defvar <span style="color: #66cc66;">*</span>b<span style="color: #66cc66;">*</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>cube <span style="color: #cc66cc;">200.0</span> <span style="color: #cc66cc;">200.0</span> <span style="color: #cc66cc;">200.0</span> :<span style="color: #555;">color</span> :<span style="color: #555;">green</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>transparent <span style="color: #66cc66;">*</span>b<span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">0.5</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>objects <span style="color: #66cc66;">*</span>viewer<span style="color: #66cc66;">*</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #66cc66;">*</span>A<span style="color: #66cc66;">*</span> <span style="color: #66cc66;">*</span>B<span style="color: #66cc66;">*</span> <span style="color: #66cc66;">*</span>world<span style="color: #66cc66;">-</span>coords<span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<div><span style="font-family: 'Courier New', monospace; font-size: small;"><span><br />
</span></span></div>
]]></content:encoded>
			<wfw:commentRss>http://garaemon.net/wordpress/?feed=rss2&amp;p=176</wfw:commentRss>
		</item>
	</channel>
</rss>
