タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

programmingとlispに関するstakiのブックマーク (3)

  • Practical Scheme

    Shiro Kawai 7/3/2000初出、3/29/2002更新 まあとりあえずカッコは我慢しよう。ラムダとやらも、関数ポインタ+環境データ ということで納得しよう。しかし、Schemeのループ構文(do)は許せないなあ。 ごちゃごちゃしてるし、途中で脱出できないし。 CやPerlのforやwhileの方がずっと使いやすいね。 え? doなんて使わない? じゃあどうやってループを書くんだ? 消えるループ 簡単だけど、よくありそうな例として、こんなのを考えてみよう。 入力テキストの行数を数える関数count_linesを書きたい。 Cで書くとすれば、こんな感じだ。 /* 例1 */ int count_lines(void) { int count = 0, c; for (c=getchar(); c!=EOF; c=getchar()) { if (c == '\n') count+

    Practical Scheme
  • Practical Scheme

    Shiro Kawai 11/20/2000初出、3/29/2002更新 Cに慣れたプログラマがSchemeのコードを見て面らうことのひとつは、 無名の関数やローカル関数の多用だろう。 特に実行効率に敏感なプログラマにとっては「関数呼出しは高価」 という感覚が染み着いているため、 至るところに散りばめられたlambdaに眉をひそめてしまうようだ。 しかしSchemeにおいては、 コード上に関数が書いてあるからといって 実行時にスタックフレームの生成やレジスタの退避などのオーバヘッドが起こるとは限らない。 例えば関数の最後に別の関数を呼び出す末尾呼び出し(tail call) はただのjumpインストラクションに置き換え可能だ。 ここでは、Cプログラマを対象に、 lambdaで生成される関数群が実際にどのように実行され得るのかを書いてみたい。 (なお、Schemeの規格ではlambdaフォ

    Practical Scheme
  • Lisp一夜漬け

    Lisp 一夜漬け 「Lisp 一夜漬け」は、ソフトバンクの月刊誌『Oh!X』の 1995年10月号〜1995年12月号に掲載された Lisp 講座です。 ここでは、掲載当時の X68000 に特化した部分などは削除してあります。 (ということは、1995年12月号掲載ぶんは全削除です) Lispの書き方 (1997.09.26 21:55) Lisp の世界 関数という概念 書き方 変数 制御と述語 関数定義 リスト (1997.10.01 00:50) Lisp におけるデータ型 ドット対 ドット対からリストへ nil について リストの定義 リストを扱う関数 リストを扱うプログラムを作る

  • 1