blog/content/post/2010/02/11/2010-02-11-00001327.md

77 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: schemeプログラムのレベルで行くと、レベル3ぐらい
author: kazu634
date: 2010-02-11
wordtwit_post_info:
- 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:5111;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}'
categories:
- Lisp
- scheme
---
<div class="section">
<p>
<a href="http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3aScheme%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%81%AE%E3%83%AC%E3%83%99%E3%83%AB10" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3aScheme%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%81%AE%E3%83%AC%E3%83%99%E3%83%AB10', 'Scheme:Schemeプログラマのレベル10');" target="_blank">Scheme:Schemeプログラマのレベル10</a>」を発見。自分のレベルで行くと、レベル3ぐらいかな
</p>
<blockquote title="Scheme" cite="http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3aScheme%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%81%AE%E3%83%AC%E3%83%99%E3%83%AB10">
<p>
レベル3
</p>
<p>
mapの便利さに目覚めて、なんでもかんでもリストにしてからmapしまくる。 letrecやinternal defineによるローカル関数定義を多用するようになる。
</p>
<p>
自分のwebサイトのドキュメントをSchemeを使ったフィルタで生成するとか、 普段から使える個人用のプログラムをSchemeで書き始める。 後に、そのコードの半分はsrfi-1とsrfi-13にある関数の再実装であったことに気づく。
</p>
<p>
call/ccを非局所脱出やコルーチンに使ってみて、 なるほど、確かに動くな、と思うが、それ以上の応用は思い浮かばない。
</p>
<p>
普段常用するマシンに色々な処理系をインストールしまくる。
</p>
<p>
たまにC言語に戻った時に printf(&#8220;%s: %d?n&#8221; name value); と書いて 何故コンパイルエラーになるのか悩む。
</p>
<p>
<cite><a href="http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3aScheme%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%81%AE%E3%83%AC%E3%83%99%E3%83%AB10" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3aScheme%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%81%AE%E3%83%AC%E3%83%99%E3%83%AB10', 'Scheme:Schemeプログラマのレベル10');" target="_blank">Scheme:Schemeプログラマのレベル10</a></cite>
</p>
</blockquote>
<p>
暇ができたら、レベル4へステップアップを目指す
</p>
<blockquote title="Scheme" cite="http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3aScheme%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%81%AE%E3%83%AC%E3%83%99%E3%83%AB10">
<p>
レベル4
</p>
<p>
ループを書くのにnamed letを自然に使うようになる。 C言語でもつい再帰で書いてしまうようになる。 何故forループがあんなに欲しかったのかわからない。 クロージャが環境を捕捉する、ということが具体的にイメージできるようになる。 関数を関数に渡すことに抵抗がなくなる。
</p>
<p>
特定の処理系を深く使い込むようになる。 リストだけでなくベクタやハッシュテーブル、オブジェクトシステム等を ぼちぼち使うようになる。 簡単なコード生成にマクロを少し使ってみる。
</p>
<p>
ライブラリに不足を感じ、マイライブラリを作りはじめる。
</p>
<p>
Emacs?でC-M-bやC-M-fなどのS式を扱うキーを無意識のうちに使うようになる。
</p>
<p>
<cite><a href="http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3aScheme%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%81%AE%E3%83%AC%E3%83%99%E3%83%AB10" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3aScheme%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%81%AE%E3%83%AC%E3%83%99%E3%83%AB10', 'Scheme:Schemeプログラマのレベル10');" target="_blank">Scheme:Schemeプログラマのレベル10</a></cite>
</p>
</blockquote>
</div>