タグ

EmacsとLispに関するagwのブックマーク (20)

  • レキシカルスコープとダイナミックスコープ

    1. レキシカルスコープとダイナミックスコープの違い 言語によって、変数のスコープに関する仕様が異なる。スコープには、レキシカルスコープとダイナミックスコープがある。採用しているスコープにより、変数の参照の仕方が違う。 レキシカルスコープでは、プログラムとして書かれた字句を解析すれば、変数のスコープを把握できる。実行時のことは考えなくて良い。これに対して、ダイナミックスコープでは、実行時における関数の呼び出され方により、参照できる変数が異なる。 用語の説明を見る前に、具体例を見た方が理解しやすい。 Scope (computer science) - Wikipedia の Lexical scoping and dynamic scoping によると、 … if function f invokes a separately-defined function g, then under

  • ゲストブック閉鎖

    ゲストブックは閉鎖しました。 ご了承ください。

  • GT Nitro: カーレーシング・ドラッグレーシングゲーム - Google Play のアプリ

    GT Nitro: Car Game Drag Raceは、典型的なカーゲームではありません。これはスピード、パワー、スキル全開のカーレースゲームです。ブレーキは忘れて、これはドラッグレース、ベイビー!古典的なクラシックから未来的なビーストまで、最もクールで速い車とカーレースできます。スティックシフトをマスターし、ニトロを賢く使って競争を打ち破る必要があります。このカーレースゲームはそのリアルな物理学と素晴らしいグラフィックスであなたの心を爆発させます。これまでプレイしたことのないようなものです。 GT Nitroは、リフレックスとタイミングを試すカーレースゲームです。正しい瞬間にギアをシフトし、ガスを思い切り踏む必要があります。また、大物たちと競いつつ、車のチューニングとアップグレードも行わなければなりません。世界中で最高のドライバーと車とカーレースに挑むことになり、ドラッグレースの王冠

    GT Nitro: カーレーシング・ドラッグレーシングゲーム - Google Play のアプリ
    agw
    agw 2009/01/27
  • bwin·必赢(中国)唯一官方网站

  • Software Design 2008年2月号 「Emacsマスターへの道」 原稿 — ありえるえりあ

    You are here: Home → 原稿・資料 → Software Design 2008年2月号 「Emacsマスターへの道」 原稿

  • ウノウラボ Unoh Labs: Emacsを自分で拡張する際のTips

    ウノウでは少数派なEmacsユーザのbokkoです。 今回は自分でEmacsLisp(以下、elisp)を書いてEmacsを拡張する際のTipsについて紹介します。 拡張する際に気に留めておくこと Emacsを拡張する上で覚えておくべきなのはEmacs上で行える対話的な動作は「M-x 関数名」で実現できるということです。例えば、C-bはカーソルを1文字分左へ戻しますが、これは「M-x backward-char」とタイプすることと同じです。もしC-bが押しにくい(多分私だけです)のであれば、以下のようなelispを評価してキーバインドを変更することができます。 (global-set-key "\C-l" 'backward-char) Emacsではこのようなキーバインドに限らず、あらゆる操作をelispを使って変更したり、新たに定義することができます。関数名もしくはキーバインドの一方し

  • ウノウラボ Unoh Labs: 続・Emacsを自分で拡張するためのTips

    今年の春頃からトリプルディスプレイで仕事しているbokkoです。なんだか同僚の視線が気になりますが、あえて空気を読まないことにしています。 前に「EmacsLispを自分で拡張する際のTips」という記事を書きましたが、今回はその続きです。 EmacsLispは難しい? EmacsLisp(以下、elisp)は難しいという意見をたまに耳にしますが、elisp自体はそれほど難しいものではありません。ただ、関数名がバラバラでややこしかったり、マニュアルが巨大でどこを見ていいのかわからず、目的のことをするための関数が見つからない、といったようにユーザが難しいと感じるのはelispという言語そのものではなく、環境(OS、ウインドウ、バッファなど)とのインタフェースにあるため、結果的にEmacsLispは難しいと感じてしまうことが多いようです。 実際、elispでプログラミングしていて感じるのはウ

  • EmacsのことはEmacsに聞け - 未来のいつか/hyoshiokの日記

    日記で書いているとおり、twittering-modeの性能に不満を持ちそのソースコードなるものを読んでいる。 全然読みこなせている感じがしない。どうもまだelispのシンタックスに体が馴染んでいない。elispのイディオムに馴染んでいない。elispのカルチャーに馴染んでいない。そんな感じがしている。 elispらしさというのをまだ肌で感じていない。 macroなんかも軽やかに扱えるようになるとあこがれのリスパーってな感じだが全然扱えていない、全然読めていない。読めていないものだから全然書ける気がしない。←今ここ。 まあ、とは言うもののlispのシンタックスは驚くほど単純なので、シンタックスでビビることはあんまりない(当か)。まあ、極論すれば(関数 引数1 引数2 ...)みたいなシンタックスなので何かわからないことがあったらひたすらカッコの一番左側のものを調べればいい。それが大抵関数

    EmacsのことはEmacsに聞け - 未来のいつか/hyoshiokの日記
  • Emacs Lisp の構造化 - あどけない話

    忌み嫌われているグローバル変数/関数をなるべく使用しないために、もう一つ小さな空間を用意している言語があります。僕のイメージでは、この空間はゆりかごです。ゆりかごの実現方法として、以下のようなものが挙げられるでしょう。 C++Java ならクラス JavaScript なら関数、あるいはオブジェクト・リテラル Scheme なら手続き(関数) Emacs Lisp も Lisp なんですから、ある関数をゆりかごにして、中に関数を定義したいところです。でも、これはできません。さて、どうするかという話です。 defun で defun defun の中で defun したいところですが、これはうまく行きません。外側の関数が実行されると、内側の関数がグローバル空間に定義されてしまうからです。 (defun foo (n) (defun bar (n) (1+ n)) (bar n)) (fbo

    Emacs Lisp の構造化 - あどけない話
  • Emacs Lisp のダメなところ - あどけない話

    Emacs Lisp をこよなく愛する僕の目から、Emacs Lisp がダメだと思うところをまとめておきます。 文化的な問題 Emacs Lisper の多くは、Lisp が好きで使っているのではなく、Emacs が好きだからしかたなく使っているのでしょう。当は C で書きたいのに、無理して Lisp を利用している感じです。 そのため、Emacs に付いてくる Emacs Lisp のコードは、Lisp らしくないものがほとんどです。単に C での発想を Lisp で表現しています。 これらのコードは、読みこなせないぐらい関数が大きく、副作用のある部分とない部分が分離されていません。また高階関数を用いて、データ構造を走査するコードと実際に仕事をするコードを分離するという意識も低いようです。 GoogleMapReduceという論文のお陰で、Lisp の写像関数(map)と畳込み

    Emacs Lisp のダメなところ - あどけない話
  • load-path などの設定 - あどけない話

    ruby-modeの話で、append ではなく cons を使うべきだと書いたところ、使い方に悩んでいる人がいるようです。 たとえば、cons で2 つパスを追加しようとすると、 (setq load-path (cons "foo" (cons "bar" load-path))) となって見にくいです。append なら、 (setq load-path (append '("foo" "bar") load-path)) と書けます。でも、セルを無駄遣いします。こういう場合は、禁断の nconc を使うという手もあります。 (setq load-path (nconc '("foo" "bar") load-path)) しかし、"n" から始まる関数がどういう副作用を持っているのか理解していなければ、使わない方がいいでしょう。 というわけで、僕はこんなことをやっています。 (de

    load-path などの設定 - あどけない話
  • Emacs Lisp で FizzBuzz - あどけない話

    Emacs Lisp の習得を目指す誰かの参考になるかもしれないので、僕なりの解答を書いておきます。 アルゴリズムの実装 繰り返しと仕事は分離したいので、まず仕事の部分を定義します。 (defun fizzbuzz (num) (cond ((= (% num 15) 0) "FizzBuzz") ((= (% num 3) 0) "Fizz") ((= (% num 5) 0) "Buzz") (t num))) (fizzbuzz 1) ;; => 1 (fizzbuzz 3) ;; => "Fizz" (fizzbuzz 5) ;; => "Buzz" (fizzbuzz 15) ;; => "FizzBuzz" whileループ Emacs Lisp で一番現実的なのは、while 分による繰り返しです。 (defun fizzbuzz1 (limit) (let ((i 1) r

    Emacs Lisp で FizzBuzz - あどけない話
  • kahua (Kahua Project) · GitHub

    Dismiss Create your own GitHub profile Sign up for your own profile on GitHub, the best place to host code, manage projects, and build software alongside 28 million developers. Sign up

    kahua (Kahua Project) · GitHub
  • クロージャとブロック (追記) - Teny's Log

    今日になって、昨日の一連のエントリを読み直してみましたが、細かい話ですが注釈を入れさせて貰った方が良さそうな部分を発見してしまいました。 それなりに推敲しているつもりですが、私が書く場合は、やはり少し寝かせてからでないとダメですね。 昨日のエントリで、Scheme と対比させるコードとして、クロージャを持たない言語である Emacs Lisp を使いましたが、その理由として動的スコープ、有限エクステントを挙げています。 しかし、単に動的スコープというだけでなく、 動的スコープで、且つ環境を特定できる手段を持たないから。 としておかないとなりませんでした。 以前のエントリにも書きましたが、動的スコープであっても、特定の環境にのみ結び付けられる仕組みさえあれば良い筈だからです。shiro さんからご紹介頂いた The Function of FUNCTION in LISP or Why th

    クロージャとブロック (追記) - Teny's Log
    agw
    agw 2007/04/05
    lexical-letについて。
  • Hustler's Tutorial to Emacs Lisp

    優しい Emacs-Lisp 講座 メジャー・モードを作ろう Emacs-Lisp without a Hustle pcs39334@asciinet.or.jp yuuji@ae.keio.ac.jp (C) 1991-1995 by HIROSE, Yuuji メジャーモードを書こう 多くの Emacs(-Lisp) 関係の教の常識を無視して、いきなりここから 始めます。これがもっとも早い道だと信じるからで、事実私もそうしてきました。 メジャーモードってなに 多くの Emacs-Lisp プログラマがで最終的に目指す目標の一つが、「メ ジャーモードが書けるようになる」ことでしょう。メジャーモードとは、例えば c-mode のように対象となるテキストの種別に適した、もっと言うと「専用 の」編集モードの事を指します。 GNU Emacs では、編集ファイルのファイル名のパターンと、その

  • CVS--Concurrent Versions System v1.11.17- C. 管理用ファイル便覧

    このページはMeadow (Emacs) の紹介ページです このWebページの各文書は自由にリンク・複製・再配布・改変していただいて構いません. ただし,複製・再配布・改変の場合は Meadow Memo のURLを記載しておいて下さい. Medow memoへのリンクについて. 間違い,要望等があれば か下記でどうぞ ページ別カウンタ Since 2002/12/13

    agw
    agw 2007/02/10
    buffer-name。
  • Lispが何故使われないか - 数学猫の生活と意見

    原因のほとんどは経路依存性*1とかネットワーク効果*2によるもので、Lisp自体の性質とは無関係だと思います。と言った上で、私が何となくLisp系言語を使わない理由としては、Too dynamic: 実行時にコードが差し替えられることがすごい利点だ、と言っている人がいましたが、逆に言えば今どのコードが走っているか理解しにくい、という欠点にも繋がる。Meta programming:S式のおかげでMeta Programmingがしやすいが、Meta Programmingを多用したプログラムは理解しにくい。動的型付け:利点でもあるけど、特有のバグを引き起こす。識別子に関数と値の2種類が別々にバインドできる。これは私には非常に美しくなく感じます。主観ですが。一方でSchemeは言語仕様が弱い。(特にModule機能が標準でない)Proprietaryな実装が中心。CMU LispはStand

  • GNU Emacs Lispリファレンスマニュアル: 関数

    URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=elisp&node=What%20Is%20a%20Function" "elisp/関数とはなにか"へのコメント(無し) 一般的には、関数とは、引数(arguments)と呼ばれる値を与えられ、 計算を行うための規則です。 この計算結果を関数の値と呼びます。 計算では副作用、つまり、変数の値やデータ構造の内容に継続する変更 を伴うこともできます。 Emacs Lispの関数や関数のようなオブジェクトに関する重要な用語をあげておきます。 関数 Emacs Lispでは、Lispプログラムにおいて引数に適用可能ものは なんであれ関数(function)である。 Lispで書いた関数を意味する場合もある。 スペシャルフォームやマクロは関数ではない。 基関数 基関数(primitive)は、ca

  • GNU Emacs Lispリファレンスマニュアル: 文字列と文字

    URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=elisp&node=String%20Basics" "elisp/文字列と文字の基"へのコメント(無し) Emacs Lispの文字列は文字の順序列を保持している配列です。 Emacs Lispでは文字を整数で表現します。 整数が文字であるかどうかは、その使われ方からしか判断できません。 したがって、文字列は、実際には、整数群を保持しているのです。 (任意の配列と同様に)文字列の長さは固定されていて、 文字列をいったん作成すると変更できません。 Lispの文字列は特別な文字コードで終端されるのではありません。 (対照的に、C言語の文字列はASCIIコード0で終端される。) 文字列は配列ですからシーケンスでもあり、 一般の配列関数やシーケンス関数で文字列を操作できます。 (see 節 6.

  • Emacs Lisp auto-compile.elを公開しました - higepon blog

    自作の Emacs Lisp auto-compile.el を公開しました。 これは何か? C, C++などのコードをEmacs上で編集しているときに、ファイルを保存したタイミングで、バックグラウンドで make コマンドが自動で実行されます。 以下のようなメリットがあると思われます。 いちいち terminal で makeしなくて良いので、開発効率があがる 保存時に行われるのでコンパイルエラーが早い段階で発見でき、開発効率があがる このような感じ C-x C-s で保存すると make が自動で実行されます コンパイルが終われば OK がでます(エラーが発生すれば表示されます) インストール方法 sf.netから auto-compile.el をダウンロードしロードパスが通っている場所に置く。 .emacsに (require 'auto-compile) ;; auto-comp

  • 1