Find solutions to problems and answers to questions you are likely to encounter when writing real-world applications in Common Lisp. This book covers areas as diverse as web programming, databases, graphical user interfaces, integration with other programming languages, multi-threading, and mobile devices as well as debugging techniques and optimization, to name just a few. Written by an author wh
Lispと言えば関数型言語という印象を持つ人が多いようです。 まあ正直に言うと、Common Lispに関して言えば違うんですけどね。Common Lispは効率のためと言えばループも代入も使いまくるし、構造体もクラスもある。実際書かれたコードも関数型プログラミングとは程遠いことも多くて、たとえば僕が作ったClackのコードを見ればオブジェクト指向言語だって言っても信じると思います。 僕自身、繰り返しをわざわざ再帰で書くよりもloop使うことが多いです。最近loopに頼りすぎてて良くないなーと思うことが多く、Common Lispでも性能が重要でないところは関数型っぽく書く癖をつけないとなー、と思っていろいろ考えています。なんでもloopだと可読性が悪い。 特に、僕が今作っているCommon Lisp方言の「CL21」では関数プログラミングをもっとしやすくする機能を入れたいと思っています。
色々ありますが、 言語仕様/マニュアル Common Lisp HyperSpec ANSI Common Lisp (Franz) Common Lisp Quick Reference Common Lispのformat関数 Common Lispマニュアルまとめ ライブラリドキュメント Quickdocs CLiki クックブック/解説 The Common Lisp Cookbook Common LISP users jp 逆引きCommon Lisp stackoverflow: common-lisp ja.stackoverflow: common-lisp コード例 Rosetta Code: Common Lisp その他参考文献 Common Lisp the Language, 2nd Edition CLtL2は古いので参考程度に こんなものでしょう。 ANSI
Quicklispに登録されているCommon Lispライブラリの情報をWebで見られるサイト「Quickdocs.org」を作りました。 http://quickdocs.org/ さくらVPS 1Gで動いてます。この2日で突貫で作ったみたいな感じなのであまりいじめないでください。 機能 とてもシンプルなので、見ていただいたほうがわかりやすいかもしれません。 たとえばClackのプロジェクトページは以下です。 http://quickdocs.org/clack 右上にはWebサイトやリポジトリへのリンクを置きました*1。 本文にはREADMEを表示しています。最近はGitHubにホストされているライブラリが多いので見慣れていると思いますけどね。 下のほうには.asdに記述されている情報を表示しています。Author, Maintainer と License、および依存ライブラリです
語「すべき:"SHOULD"」や形容詞「推奨される:"RECOMMENDED"」は ある状況ではガイドの要求を無視する適切な理由があるかもしれないことを意味しますが、 他のやりかたを選択する前にガイドの含意は理解され注意し重視される必要があります。 「すべき」ことに違反する場合許容を求めなければなりません。 RFCとは異なり、上記キーワードの利用全てを大文字で表記するわけではありません。 ガイドで示すルールに対する違反が有効であったり必要であるケースがあります。 いくつかのケースでは許可を得たり、適切な人達からの承認を求めなければなりません。 許可はあなたのプロジェクトの所有者に由来します。 承認はガイドライン違反をした場所の近くのコメントの中でリクエストされ、レビューアによって承諾されます。 オリジナルのコメントはあなたの名前で署名されるべきで、レビューアは レビュー時に署名した承認を追
「O/Rマッパー」や「ORM」と聞くだけで顔をしかめる人もいらっしゃいます。たぶん過去にひどい目にあったんでしょうね。その大きな理由の一つがパフォーマンスでしょう。 一昨年のYAPC::Asiaに参加したとき、ORMは使うなという話を4回くらい聞いたのが印象的でした。DBのデータはハッシュで返すか、DBIをそのまま使うほうが良いと。弊社でもパフォーマンス上の問題をわかりづらくしてしまうことから、ORMを使用しないプロジェクトがいくつかあります。 まあ、そりゃDBI使うほうが高速に動くとは思います。 しかし、僕が使っているのは実用的な言語であるCommon Lispです。実行効率と抽象化がとても得意な言語です。さらに優れたオブジェクトシステムであるCLOSも仕様に含まれています。 そこで、既存のO/RマッパーにCommon Lispらしさを加えてみるとどうだろう。 そう思って作ってみたのが、
「Roswell」というプロダクトがある。 clfreaksのPodcastで聴いたことがあるかもしれないし、数週間前にLisp Meet Upで佐野さん (@snmsts) の発表を聞いたかもしれない。 https://github.com/snmsts/roswell Lisp Meet Up 発表録画 知名度の割には意外と長く開発が続いているプロダクトだ。プロジェクトの最初のコミットが2014年7月30日なので、もう11ヶ月ほど開発が継続していることになる。開発は未だ活発で、バグ報告をするとその日のうちに修正がmasterに入ることが多い。 僕が働いてるサムライト株式会社では、個人の開発マシンではもちろん、アプリケーションサーバでも日常的に使われている。 RoswellにはChefのrecipeも既にある。 先日RoswellはTravis CIとCircle CI用のインストーラス
コマンドラインからHyperSpecを簡単に開けるRoswellスクリプトを作ったので紹介します。 https://gist.github.com/fukamachi/3510ea1609c1b52830c2 Roswellが何か知らない人はまずこちらの記事をお読みください。 blog.8arrow.org 昔はEmacsからemacs-w3mで開くことでEmacsから出ずに見られるように設定していたのですが、慣習として定着しなかったので最近はこのスクリプトでターミナルから開いています。 これならGUIのデフォルトブラウザで開けるので、Slackで質問されたときとかに「HyperSpec見ろ」と言ってURLを投げつけたりできて便利です。 インストール方法 Roswellをインストールしてください。 その後、上述のgistページからダウンロードして実行属性をつけ、PATHの通ったところに置く
最近Quickdocs.orgをフルスクラッチしました (2回目)。 今回のメインは裏側の月次バッチ処理でしたが、Webアプリ部分も多少変更をしました。特に運用方法が、Roswellを全面的に使うことで大きく変わりました。 Common LispのWebアプリ開発では、未だにこのブログの以下のエントリが参照されてるっぽいですが内容もかなり古くなっています。なのでこの機会に現代に合わせてアップデートしておこうと思います。 Quickdocs.org で学ぶCommon LispのWebアプリ運用ノウハウ - 八発白中 Common LispでWebAppの開発に必要なN個のこと - 八発白中 Roswell 何はともあれRoswellが必要です。 Roswellの紹介記事は以前書きました。 Common Lispとリアル・ワールドを繋ぐ「Roswell」の紹介 - 八発白中 Roswellは
fukamachi @nitro_idiot Common Lispは、チューニングしたプログラムをREPLで部分コンパイル→ベンチマーク→良くなってたらコミット→さらにチューニング、のサイクルがかなり速く回せるのも高速なプログラムを書くのに向いているな、と思った 2014-10-23 17:50:31 fukamachi @nitro_idiot Cのhttp-parserの最適化オプションを直して、fast-httpをさらに高速化したら、Common LispがCの1.7倍速くなって不気味なので誰か間違いがあったら指摘してほしい github.com/fukamachi/fast… 2014-10-26 19:18:26
Ubuntu8.10にEmacsとCommon Lispの開発環境をセットアップする方法をcametanさんに教えてもらったので早速インストール! まず、Emacsのインストール [システム]→[システム管理]→[日本語セットアップヘルパ]を起動し、「emacs-env-ja」にチェックを入れる。(ここに来るまでに何度かOKボタンを押さないといけない。) 次に必要になるパッケージのインストール [システム]→[システム管理]→[Synaptic パッケージ・マネージャ]を開き以下のパッケージにチェックを入れ、「適用」を押してインストール。 SBCL……(Steel Bank Common Lisp:Common Lisp実装) SLIME……(Superior Lisp Interface Mode for Emacs:EmacsとLispの接続ツール) Hyperspec……(ANSI
SLIME の公式ページ から入手可能です.現在は ArmedBearCL, AllegroCL, CLISP , Corman Lisp, CMUCL, ECL, LispWorks, OpenMCL, SBCL, Scieneer Common Lisp といった処理系に対応.( Scheme48 に対応した SLIME48 もあります) 別プロセスで起動した lisp 処理系とソケット経由で通信する 関数の引数表示 シンボルの補完機能 ( **例:** ``m-v-b TAB => multiple-value-bind`` ) コマンド一発で HyperSpec が引ける コンパイラの note, warning, error をソース上で示してくれる(下線が引かれて,カーソルを合わせると詳細がでる) 親切なデバッガ(バックトレース上でカーソルを合せると詳細が表示されたりとか) 現
この章ではLispによるオブジェクト指向プログラミングについて論じる. Common Lispにはオブジェクト指向のプログラムを書くためのオペレータが揃っている. それらをまとめて,Common Lisp Object System,またはCLOSと呼ぶ. ここではCLOSを単にオブジェクト指向のプログラムを書く一手段としてではなく, Lispプログラムそのものとして捉える. CLOSをこの観点から眺めることがLispとオブジェクト指向プログラミングとの関係を理解する鍵となる. Plus ça Change オブジェクト指向プログラミングとはプログラムの構成の変化を指す. その変化はプロセッサの処理能力の分布について起こったものと似ている. 1970年,「マルチユーザのコンピュータシステム」と言えば 一つか二つの大型メインフレームが多数のダム端末に接続されたものを指していた. 今では多数の
PerlでWebAppの開発に必要なN個のこと - Islands in the byte streamのCommon Lisp版です。 あるプログラミング言語で実際にWebAppを開発できるようになるまで、何が必要だろうか。言語仕様の習得は終えているとしよう。おそらく、最低限以下のような知識が必要だと思われる。とりあえずCommon Lispについて知っていることを書いた。←ここまで引用 Perl版と異なるのは、これは昔よく使われていたけど今は使うべきじゃないみたいなのも書きました。 パッケージマネージャ Quicklispを使います。Common Lispで開発しようと思ったら処理系の次にこれが必要です*1。ここ数年のCommon Lispの環境変化はQuicklispに依るところがとても大きいです。 http://www.quicklisp.org/beta/ ライブラリごとにバージ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く