タグ

Common LISPに関するmatatabityのブックマーク (17)

  • Common Lispのお宅拝見: CMU Common Lisp篇 — #:g1

  • 普通のCommon Lisp by nitro_idiot さん - niconare

    歌舞伎座.tech#9 異種プログラミング言語格闘勉強会 http://kbkz.connpass.com/event/26677/

    普通のCommon Lisp by nitro_idiot さん - niconare
  • 型宣言を付けたら遅くなった話

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    型宣言を付けたら遅くなった話
  • Common Lispで実装する非再帰eval - ksmakotoのhatenadiary

    この記事はLisp Advent Calendar 2015( http://qiita.com/advent-calendar/2015/lisp )の記事です。 まずそこそこの分量がありますが、コード全体を示します。 タイミングが合えばShibuya.lispで発表しようかと思っていたのですが、色々あってそのままになっていたのでここで公開します。というわけで以下はトークのノリでだらだらと紹介します。 まず、これはどういうものか、ということについてですが、Common Lispで実装したSchemeです。Common Lispを使っていて不意にSchemeの構文で書きたくなった時などに有用かと思います(実際のところは、他の言語でSchemeを実装するためのプロトタイプとして作りました)。Three Implementation Models for Schemeの影響もなんとなく受けてい

    Common Lispで実装する非再帰eval - ksmakotoのhatenadiary
  • Worse Is Better

    Takは関数呼び出しと固定小数点数演算を計測するGabrielベンチマークだ。Traverseは構造体の生成とアクセスを計測するGabrielベンチマークだ。LexerはCコンパイラのトークナイザで、ディスパッチと文字の操作を計測する。 これらのベンチマークは1987年にSun 3上で標準のSun Cコンパイラを使って最高度の最適化を有効にして実行された。Lispはnon-intrusiveなガーベジコレクタを走らせていない。 1.3 優れた環境 モダンなプログラミング環境がLispとAIの伝統に由来するということは間違いない。初めてのビットマップ端末(Stanford/MIT)、マウスポインティングデバイス(SRI)、フルスクリーンテキストエディタ(Stanford/MIT)、およびウィンドウ環境(Xerox PARC)はすべてAIの研究に携わっていた研究所から出てきている。今日でもなお

  • 逆引き Common Lisp クックブック:命名の慣習

    ここでは、関数名や変数名の主な命名の慣習を挙げます。 変数名 *global-variable* 大域変数で用いられます。Common Lispの場合は、更にスペシャル変数であることを意味することが多いようです。 スペシャル変数に**が一貫して付いているのはCommon Lispの仕様策定の際に投票で議決された結果です。 constant-variable 大域定数。Common Lisp標準の大域定数は、飾りは付いていません (pi、most-positive-fixnum等々) 一貫して定数には何も装飾がされていないのはCommon Lispの仕様策定の際に投票で議決された結果です。 +constant-variable+ 比較的最近の慣習のようですがユーザ定義の定数で用いられます。 CLIM方面が発祥のようです。 関数名 foo1 foo-1 fooの補助関数を表わすことが多いようで

  • コンパイラマクロとインライン展開とその問題

    最近、Allegro Common Lisp の Enterprise 版が手に入り、最適化熱を再燃させています。その手始めとして、Computer Language Benchmarks Game の Lisp プログラムを高速化しようとしましたが、正直に言って、これらのプログラムは Lisp らしからぬ書きぶりで(いやむしろ Lisp らしいと言ったらいいのか)、高速化しようにもなかなか手が付けられない状態です。どういうことかと言うと、例えば fannkuch-refux には次のようなマクロがあります。 (defmacro setlambda(n) (declare (type fixnum n)) (let ((copy (gensym)) (perm (gensym))) `(lambda (,perm ,copy) (declare (optimize (speed 3) (s

  • optima - 高速パターンマッチライブラリ - Qiita

    開発が成熟してきたので、ここらで拙作のパターンマッチライブラリ、optimaを日語で解説したいと思う。ただし解説とは言っても、詳細な仕様をだらだらと解説するようなことはしない。むしろ「なぜパターンマッチなのか」を踏まえた上で、簡単な入門と使用例を示すことで、パターンマッチの重要性を認識してもらうのが狙いだ。なお、詳細な仕様についてはマニュアルを参照されたい。 なぜパターンマッチなのか Common Lispにはパターンマッチライブラリが多数存在するが、その大半は単にパターンマッチが便利だからという視点しか持っていない。たしかにパターンマッチは便利であるが、便利なだけでは人々はそれを使おうとはしない。より質的な視点を与える必要があるだろう。 OCamlやHaskellなどの関数型言語では、あらゆるデータは、代数的データ型として定義され、それにともなうデータコンストラクタによって構成される

    optima - 高速パターンマッチライブラリ - Qiita
  • 第6回 Common Lispライブラリを書く

    僕のブログで「Modern Common Lispはターゲットをどこに置いているのか」という質問をいただきました。最初は環境構築から始まっており、初心者向けに見えますが、次はHello, Worldもせずにライブラリの解説をしています。 Modern Common Lispのターゲットは、これからのCommon Lispを学びたい人です。当初はこの連載を読めばCommon Lispについてのすべてを学べるAll-In-One形式にしようと考えていたのですが、それでは時間がかかりすぎてしまうため、いくつかの過程を省いて進めます。たとえば、Lispでは必要なリスト処理などはここでは解説しません。理由は、それを学ぶための書籍が既に多く存在するからです。Common Lispの基文法はそれらの書籍を参照してください。この連載は、Common Lispの入門書と並行、または読了後に読むことをおすす

  • VOPで遊ぶ | κeenのHappy Hacκing Blog

    (:meta ((:this “Lisp Advent Calendar 2014の3日目の記事”) (:prev (:author “tk_riple” :title “時の羅針盤@blog: R7RSポータブルライブラリを書く際の落とし穴”)) (:next (:author “nobkz” :tite “Shenの基礎その1 基的な型 - Qiita”)))) κeenです。さっきまでVOPで遊んでたので当初の予定を変更してVOPの話をします。 VOPとは何か SBCLやCMU CLで使われているネイティブコードを吐くための機構、要はインラインアセンブラです。 VOPとはどんなものか とりあえずコードをば。x86-64用です。 (in-package :cl-user) (defpackage vop-sample (:use :cl :sb-ext :sb-c)) (in-pac

    VOPで遊ぶ | κeenのHappy Hacκing Blog
  • http://lisphub.jp/doc/google-common-lisp-style-guide/lispguide.xml

  • Common Lisp に中置記法を入れようとしたら C 言語もどきになった - Qiita

    ストーリー あるデータ構造を、 Common Lisp で実装しようと思い立ちました。そのデータ構造には、既に C 言語での実装があったので、「まあ元々の論文を読むのは面倒だし、とりあえずアルゴリズムをコピペするか」と思っていました。 そこで私は思ったのです: Common Lisp の配列参照は面倒すぎる! 例えば、以下の C の式を考えます:

    Common Lisp に中置記法を入れようとしたら C 言語もどきになった - Qiita
  • Tutorial:Lispで人工知能 - Common LISP users jp

    Tag: チュートリアル セマンティックウェブ・ダイアリー: Lispで人工知能 http://blog.livedoor.jp/s-koide/ チュートリアルで利用する処理系には、Allegro CLの試用版を想定 PAIPによるLisp入門 Lispで人工知能プログラム始めます Lispで人工知能プログラム始めます フリーなCommon Lispをインストールしよう フリーなCommon Lispをインストールしよう(Debian SBCL 編) REPL : Lisp の対話機能 Lisp: 基のキ Lisp: 基のキ Lispの基その2 Lispの基その3 Lispの基その4 関数の定義 Lispの関数定義,述語,条件文 再帰プログラムいろいろ 再帰プログラムいろいろ(続き) 変数束縛とスコーピング 変数束縛はLispのもう一つの質である. 変数束縛はLispのもう一

  • 逆引き Common Lisp クックブック:逆引きCommon Lisp

    逆引きCommon Lisp 逆引きCommon Lisp書式 ライセンスについて 編集に関する基方針 新規ページ作成の手順 基処理と言語標準機能 文字列 シンボル 数値 リスト 配列 ハッシュテーブル 構造体 多値 標準入出力 format 日付と時刻 変数とスコープ 制御構造 コンディション 入出力 関数 マクロ パッケージ オブジェクトシステム(CLOS) 目的別 ライブラリ一覧はこちら : ライブラリ OS 正規表現 スレッド ネットワーク コマンドライン GUI XML インターネットサービス サーバ Webオートメーション データベース ライブラリ管理 テストフレームワーク タイマーとスケジューリング その他 落とし穴 開発環境 最適化 処理系 コーディングスタイル 仕様/ドキュメント その他 リンク集 Tag:【募集中】 欲しい項目、質問事項があれば直接編集、もしくはリク

  • Cより高速なCommon Lispコードを書く - 八発白中

    Cで書くコードの方がCommon Lispで書くより速いって人がいたら、それは彼のCの技量が高すぎるってことだね。 “If you can't outperform C in CL, you're too good at C.” — Eric Naggum 最近、Common Lispの非同期Webサーバ「Wookie」を高速化する過程で、ボトルネックになっていたHTTPリクエストのパース部分を高速に処理するライブラリを書きました。 fast-http - A fast HTTP request/response parser for Common Lisp 既存のライブラリ「http-parse」よりも約10倍速く、Cのライブラリ「http-parser」より5%ほど高速です。 追記 (2014/10/26): 最適化をやり直し、現在は「http-parse」よりも約27倍速く、Cの「h

    Cより高速なCommon Lispコードを書く - 八発白中
  • Common Lisp is still hard to satisfy. - Qiita

    Abstract マクロは、構文拡張により言語の高い次元の抽象化を行うことができる、Lisp 特有の機能です。マクロは、S式をコンパイルするとき、そのheadがマクロをもつシンボルであったならば、対応する macro-function を呼び出して式を変形させるという動作をします。コンパイルは構文木のrootから順に行われます。 この記事では、マクロ一般の能力ではなく、 現在の Common Lisp におけるマクロシステム について、それが制限を持っているということを示します。また、この制限を克服できる新たなマクロシステムを提案します。 マクロとは (略) マクロに関係するマクロ、関数、変数は以下です。 (defmacro name lambda-list &body body) (macrolet bindigs &body body) (eval form) (compile nam

    Common Lisp is still hard to satisfy. - Qiita
  • Common Lisp - ファイヤープロジェクト

    Skip to contentCategory: common-lisp1710月2007 CLOSCLOSとはCommon Lisp Object S... Fujiko common-lisp, feature1710月2007 多値Common Lispでは関数は値を0個以上返す.こ... Fujiko common-lisp, feature157月2007 文字列Lispの文字列は値が文字のベクタとして表現され扱わ... Fujiko common-lisp, feature157月2007 ハッシュLispのハッシュを使ってみた.ハッシュの作成と値の... Fujiko common-lisp, feature157月2007 関数とクロージャCommon Lispでの関数の詳細についていろいろ... Fujiko common-lisp, feature117月2007 シン

  • 1