<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xml:lang="ja">
	<channel>
		<title>Happy OCaml!!</title>
		<link>http://ocaml-nagoya.g.hatena.ne.jp/mzp/</link>
		<description>Happy OCaml!!</description>
		<dc:creator>mzp</dc:creator>


		<item>
			<title>[Syntax]_xを使えば、unused variable警告を抑制できるよ</title>
			<link>http://ocaml-nagoya.g.hatena.ne.jp/mzp/20090927/underscore</link>

			<description><![CDATA[
		<div class="section">
			<p>みなさん、コンパイルするときに"-w A -warn-error A"つけてますか? わりと適切な警告がでて便利ですよ。</p>
			<p>例えば、こんなコード書くと警告してくれます。</p>
<pre class="syntax-highlight">
# <span class="synStatement">let</span> f x <span class="synStatement">=</span> <span class="synConstant">()</span><span class="synStatement">;;</span>
<span class="synConstant">Warning</span> <span class="synConstant">Z</span>: unused variable x.
<span class="synStatement">val</span> f : 'a -&amp;#<span class="synConstant">62</span><span class="synStatement">;</span> <span class="synType">unit</span> <span class="synStatement">=</span> &amp;#<span class="synConstant">60</span><span class="synStatement">;fun</span>&amp;#<span class="synConstant">62</span><span class="synStatement">;</span>
</pre>

			<p>うん、うん、xを使ってないことを教えてくれたんだね、ありがとう。</p>
			<p>で、普段はなんの問題もないんだけど、コードを自動生成したときとかは、この警告がうざいこともある。</p>
			<p>そんなときは、先頭に_をつければ、警告を抑制できるよ。</p>
<pre class="syntax-highlight">
# <span class="synStatement">let</span> f _x <span class="synStatement">=</span> <span class="synConstant">()</span><span class="synStatement">;;</span>
<span class="synStatement">val</span> f : 'a -&amp;#<span class="synConstant">62</span><span class="synStatement">;</span> <span class="synType">unit</span> <span class="synStatement">=</span> &amp;#<span class="synConstant">60</span><span class="synStatement">;fun</span>&amp;#<span class="synConstant">62</span><span class="synStatement">;</span>
</pre>

			<p>ワイルドカード・パターン(_)とは違うから、ちゃんと変数を使うこともできる。</p>
<pre class="syntax-highlight">
# <span class="synStatement">let</span> f _x <span class="synStatement">=</span> _x +<span class="synConstant">1</span><span class="synStatement">;;</span>
<span class="synStatement">val</span> f : <span class="synType">int</span> -&amp;#<span class="synConstant">62</span><span class="synStatement">;</span> <span class="synType">int</span> <span class="synStatement">=</span> &amp;#<span class="synConstant">60</span><span class="synStatement">;fun</span>&amp;#<span class="synConstant">62</span><span class="synStatement">;</span>
</pre>

		</div>
]]></description>

			<dc:creator>mzp</dc:creator>

			<pubDate>Sat, 26 Sep 2009 15:00:00 GMT</pubDate>


			<category>Syntax</category>


		</item>

		<item>
			<title>[Mac]SnowLeopardでOCamlは動くよ。しかも64bitで</title>
			<link>http://ocaml-nagoya.g.hatena.ne.jp/mzp/20090902/snowleopard</link>

			<description><![CDATA[
		<div class="section">
			<p>生協にジュースを買いに行ったら、なぜかSnowLeopardを買ってしまいました。</p>
			<p>とりあえず最新のMacPortsを入れて<code>port install ocaml</code>をしたら、あっさりocamlがインストールできました。</p>
			<p>しかも64bitでビルドされていました。</p>
<pre class="syntax-highlight">
$ ocaml
        <span class="synConstant">Objective</span> <span class="synConstant">Caml</span> version <span class="synConstant">3.11</span>.<span class="synConstant">1</span>

# <span class="synPreProc">Sys</span>.word_size<span class="synStatement">;;</span>
- : <span class="synType">int</span> <span class="synStatement">=</span> <span class="synConstant">64</span>
</pre>

			<p><a href="http://f.hatena.ne.jp/mzp/20090902203631" class="hatena-fotolife" target="_blank"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/m/mzp/20090902/20090902203631.png" alt="f:id:mzp:20090902203631p:image" title="f:id:mzp:20090902203631p:image" class="hatena-fotolife"></a></p>
			<p>これで、31bitのintに苦しめられることもありません。やったね!</p>
		</div>
]]></description>

			<dc:creator>mzp</dc:creator>

			<pubDate>Tue, 01 Sep 2009 15:00:00 GMT</pubDate>


			<category>Mac</category>


		</item>

		<item>
			<title>[Mac]Macでxml-lightを使おう</title>
			<link>http://ocaml-nagoya.g.hatena.ne.jp/mzp/20090802/xmllight</link>

			<description><![CDATA[
		<div class="section">
			<p><a href="http://tech.motion-twin.com/xmllight.html" target="_blank">xml-light</a>便利ですよね。厳密なスキーマのチェックとかが要らなくて、とりあえずXMLを扱いたいときとかにぴったり。</p>
			<p>でもMacPortsでxml-lightをインストールしても、ocamlfindから見えなくて結構不便です。</p>
			<p>なんとかしましょう。</p>
			<h4> 何が問題なの?</h4>
<pre class="syntax-highlight">
<span class="synComment"># xml-lightをインストールした！</span>
$ sudo port <span class="synStatement">install</span> xml-light
....
<span class="synComment"># でもocamlfindからは見えない&amp;#62;&amp;#60;</span>
$ ocamlfind list <span class="synStatement">|</span> <span class="synStatement">grep</span> xml-light
</pre>

			<p>なぜocamlfindから見えないかというと、xml-lightのMakefileがocamlfindに対応していないからです。</p>
			<p>ここで解決方法は2つあります。</p>
			<ol>
				<li> 自分でxml-lightをビルドする</li>
				<li> ボクの作ったPortfileを使う</li>
			</ol>
			<h4> 方法1:自分でxml-lightをビルドする</h4>
			<p>普通にビルドする。うっかりmake installしちゃわないように注意してください。</p>
<pre class="syntax-highlight">
$ wget http://tech.motion-twin.com/zip/xml-light<span class="synConstant">-2</span>.<span class="synConstant">2</span>.zip
$ unzip xml-light<span class="synConstant">-2</span>.<span class="synConstant">2</span>.zip
$ <span class="synStatement">cd</span> xml-light
$ make all
$ make opt
</pre>

			<p>適当にMETAファイルを作ってやる。ボクは以下の内容をMETAというファイルに保存して使ってます。</p>
<pre>
name=&#34;xml-light&#34;
version=&#34;2.2&#34;
description=&#34;minimal XML parser &#38; printer&#34;
requires=&#34;&#34;
archive(byte) = &#34;xml-light.cma&#34;
archive(native) = &#34;xml-light.cmxa&#34;
</pre>

			<p>ocamlfindを使ってインストールする。</p>
<pre class="syntax-highlight">
$ vi META
<span class="synComment"># 上記の内容を保存する</span>
....

$ ocamlfind <span class="synStatement">install</span> xml-light META xml-light.a xml-light.cma xml-light.cmxa *.cmo *.cmi *.cmx *.cmx<span class="synStatement">&quot;</span>
</pre>

			<p>これでocamlfindから使えるようになりました。</p>
<pre class="syntax-highlight">
$ ocamlfind list <span class="synStatement">|</span> <span class="synStatement">grep</span> xml-light
xml-light           <span class="synStatement">(</span>version: <span class="synConstant">2</span>.<span class="synConstant">2</span><span class="synStatement">)</span>
</pre>

			<h4> 方法2: ボクの作ったPortfileを使う</h4>
			<p>上で書いた内容をやってくれるPortfileを作りました。</p>
			<p>port installするだけでxml-lightをインストールできます。</p>
<pre class="syntax-highlight">
$ wget http://howdyworld.org/patches/Portfile
$ sudo port <span class="synStatement">install</span>
</pre>

<pre class="syntax-highlight">
$ ocamlfind list <span class="synStatement">|</span> <span class="synStatement">grep</span> xml-light
xml-light           <span class="synStatement">(</span>version: <span class="synConstant">2</span>.<span class="synConstant">2</span><span class="synStatement">)</span>
</pre>

			<h5> Portfile</h5>
			<p>念のためPortfileの中身をここにも貼っておきますね。META.zipは、上記のMETAファイルをzipで圧縮しただけのファイルです。</p>
			<a name="seemore"></a>

		</div>
]]></description>

			<dc:creator>mzp</dc:creator>

			<pubDate>Sat, 01 Aug 2009 15:00:00 GMT</pubDate>


			<category>Mac</category>


		</item>

		<item>
			<title>[Emacs]imenu.elで、関数定義にジャンプ</title>
			<link>http://ocaml-nagoya.g.hatena.ne.jp/mzp/20090705/imenu</link>

			<description><![CDATA[
		<div class="section">
			<p><a href="http://f.hatena.ne.jp/mzp/20090705192713" class="hatena-fotolife" target="_blank"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/m/mzp/20090705/20090705192713.png" alt="f:id:mzp:20090705192713p:image" title="f:id:mzp:20090705192713p:image" class="hatena-fotolife"></a></p>
			<p>imenu.elを使うと、バッファ内の関数定義一覧を出して、そこにジャンプすることができるよ。TAGSと違って、ファイルの更新が不要だから、お手軽だよ。</p>
			<h4> インストール方法</h4>
			<p><a href="http://dev.ariel-networks.com/Members/matsuyama/imenu" target="_blank">        imenu.el の使い方と応用        &mdash;        ありえるえりあ    </a>を参考に、imenu.elとanything.elを設定する。</p>
			<p><a href="http://caml.inria.fr/cgi-bin/hump.en.cgi?contrib=76" target="_blank">tuareg-imenu.el</a>からtuareg-imenu.elをダウンロードして、load-pathの通ってるディレクトリに置く。</p>
			<p>.emacsに設定を追加する。</p>
<pre class="syntax-highlight">
<span class="synSpecial">(</span>autoload <span class="synSpecial">'</span><span class="synIdentifier">tuareg-imenu-set-imenu</span> <span class="synConstant">&quot;tuareg-imenu&quot;</span> <span class="synConstant">&quot;Configuration of imenu for tuareg&quot;</span> <span class="synStatement">t</span><span class="synSpecial">)</span>
<span class="synSpecial">(</span>add-hook <span class="synSpecial">'</span><span class="synIdentifier">tuareg-mode-hook</span>
	  <span class="synSpecial">(</span><span class="synStatement">lambda</span> <span class="synSpecial">()</span>
	    <span class="synSpecial">(</span>tuareg-imenu-set-imenu<span class="synSpecial">))</span>
</pre>

		</div>
]]></description>

			<dc:creator>mzp</dc:creator>

			<pubDate>Sat, 04 Jul 2009 15:00:00 GMT</pubDate>


			<category>Emacs</category>


		</item>

		<item>
			<title>[Mac][OMake]omakeをインストールしよう</title>
			<link>http://ocaml-nagoya.g.hatena.ne.jp/mzp/20090705/omake</link>

			<description><![CDATA[
		<div class="section">
			<p>MacPortsで<a class="keyword" href="http://ocaml-nagoya.g.hatena.ne.jp/keyword/omake">omake</a>をインストールしようとすると、<a href="http://d.hatena.ne.jp/fu7mu4/20090704/1246727265" target="_blank"> omakeがインストールできない - ふなむしのはあとふるだいありぃ！</a>って怒られてしまいます。</p>
			<p>OCaml3.11で<a class="keyword" href="http://ocaml-nagoya.g.hatena.ne.jp/keyword/omake">omake</a>をビルドすると、発生するらしいです。</p>
			<p>そんなときは慌てず騒がず、/opt/local/src/exec/omake_exec.mlからsyncをコメントアウトしましょう。</p>
<pre class="syntax-highlight">
<span class="synComment">(* external sync : unit -&amp;#62; unit = &quot;caml_sync&quot; *)</span>
</pre>

			<p><a href="http://trac.macports.org/attachment/ticket/18786/devel--omake.patch" target="_blank">パッチ</a>が、もうでてるんで、そのうち直るでしょう。</p>
		</div>
]]></description>

			<dc:creator>mzp</dc:creator>

			<pubDate>Sat, 04 Jul 2009 15:00:00 GMT</pubDate>


			<category>Mac</category>

			<category>OMake</category>


		</item>

	</channel>
</rss>

