77 lines
4.4 KiB
Markdown
77 lines
4.4 KiB
Markdown
---
|
||
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(“%s: %d?n” 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>
|