タグ

ブックマーク / www.shido.info (4)

  • 代入を簡略化するマクロ

    4. 代入を簡略化するマクロ 4.1. はじめに 今回は値を代入するマクロについて解説します。値を代入するマクロとしては setf がありますが、タイプ量が多くなりがちな欠点があります。 ここでは、単に値を代入するマクロ、変数を操作してその結果をもともとの変数に 代入するマクロ、さらに一般的な代入マクロについて述べたいと思います。 4.2. 単に値を代入するマクロ 単に値を代入するだけなら、新しく定義するマクロの中で setf がそのまま使えます。 例として、引数を全て同じ値にセットする allfonlisp を取り上げます。 allf を使って、全ての引数を t または nil にセットする tfonlisp, nilfonlisp が定義できます。 (defmacro allf (val &rest args) ; (1) (let ((gval (gensym))) `(let ((

  • IO in Haskell

    5. 入出力 Haskell は純粋な関数型言語なので入出力のような副作用のある 操作は少しめんどくさくなります。 しかし、このことによって、副作用のある部分を副作用の無い関数から 隔離することが出来ます。 1. do 記法 do ブロックの中の式は順番に実行されます。 IO は、入力 → 計算 → 出力 の順番で実行する 必要があるので do 記法を用いて記述します。 do 記法の代わりに >>= を使うことも出来ます。 この方法は Monad のところで説明します。 do ブロックは通常の関数と異なるのでアクションと呼ばれます。 do ブロックから外部に値を返すには return を用います。 return a とすると外部には IO a が返ります。 (正確な説明は Monad のところでします。) ファイル読み込みなどの入力アクションが返す値は IO a と呼ばれ、 普通の a と

  • On Python

    Python は最近人気のスクリプト言語です。 Python の魅力はシンプルな文法と、拡張性の高さでしょう。 Python はちょっとしたスクリプトを書くのにも、大規模なプログラムを書くにも適した言語です。 最近の Version は日語にも完全に対応し、日でも愛用者が増えていると思われます。 Web 上で見当たらなかった文書やスクリプトを書いて公開しています。 特に Tkinter について詳しく書いてあります。 Python メモ Perl, Python, Ruby の比較 Python 早めぐり xyzzy から pydoc を使う wxPython でお気軽 guiwxPython と Tkinter で Eight Queens を作る Python のクラスシステム Python を使った FTP アップロード Python の”新しい”クラス Python 2.5

  • (Sather を試そう) 1. Sather vs C++: 実行速度の比較

    1. Sather は当に C++ より速いのか? Wikipedia をみると "Sather で書かれたプログラムはしばしば C++ で書かれたものよりも早く実行される" と書いてありました。当か?と思って簡単なプログラムを書いて試してみることにしました。 Sather と C++ の特徴が出て、かつ、 単純で処理時間が長いプログラムということで素数の数を数え上げる簡単なプログラムを書いて試してみました。 見つかった素数はリストに保持していきます。 2. C++ で書くと まず、C++ で書くと [code 1] のようになります。vector<int> を使って見つかった素数をリストに加えていきます。 それほど C++ の特徴を生かした例ではないのですが、vector クラスを使ったということで良しとしましょう。 01: // g++ -O2 nprime.cpp -o npri

  • 1