タグ

Lispに関するsiroccoのブックマーク (108)

  • Omicron Lisp

    List Processor Lots of Insane Stupid Parentheses と揶揄されることも:-) MIT の JohnMcCarthy 教授らによって 1958 年に開発が始まったプログラミング言語.元々は FLPL(Fortran List Processing Language)という FORTRAN の拡張(サブルーチンパッケージ?)だったらしい.人工知能研究用途によく使われ,Lispマシンといった専用計算機も作られた. リスト構造(S式)を基盤とした統一的な記述法と拡張性が特徴.setq のような代入文を持っているので純粋な関数型言語とは言えない.数多くの方言が存在する言語だが,CommonLispやSchemeが有名(CommonLisp はANSIで標準化されている). Tiki:Lisp LinearLisp EmacsLisp History of

    sirocco
    sirocco 2010/09/03
    「EmacsLisp は動的スコープで,CommonLisp,Scheme はレキシカルスコープ. なんで EmacsLisp を動的スコープにしたかは History of T によると,動的スコープの方が効率的だからって,当時(1982?) RMS 氏は答えていたらしい」
  • Emacs Lisp

    このページでは、 "GNU Emacs Lisp Reference Manual" を読んでもよく分らない Emacs Lisp の謎を 気の向くままに解き明かしていく。 [山和彦のHPへ]

    sirocco
    sirocco 2010/09/03
  • Common lisp の package と require でライブラリを使ったプログラムを書く方法。 - 言語ゲーム

    package Common lisp の package について調べてみました。package というのはネームスペースのような物で、プログラムの中を区切って名前が混じらないようにする仕組みです。名前の管理だけを行うので、一つのファイルに複数の package を定義する事も出来ます。これはライブラリの読み込み機能も付いた Scheme の libraryと比べて低レベルで面白いので clisp で調べてみました。 まず clisp を起動すると、あらかじめデフォルトの package の中に居る事になっています。現在の package は *package* で知る事が出来ます。システムに現在登録されている package を全部知るには list-all-packages を使います。 > *package* #<PACKAGE COMMON-LISP-USER> > (list-

    Common lisp の package と require でライブラリを使ったプログラムを書く方法。 - 言語ゲーム
    sirocco
    sirocco 2010/08/20
    Common lisp の package と require でライブラリを使ったプログラムを書く方法。
  • gcl emacs

    GNU Common Lispを使う たけおか@AXE (ex.山ナヲミ)(竹岡尚三) last update 2018/SEP/10 #| これは、筆者が 技術評論社 刊 ソフトウェアデザイン誌 「つこてなんぼのFreeBSD」 1998年9月 に掲載した原稿をもとにしたものです |# 0. はじめに 筆者がSun3(CPU=68020)のSunOS下で、CommonLispを初めて触った時、あまりに 快適なので驚きました。 当時、ワークステーションと呼ばれる機械の性能が急激に上がり始めた頃です。 CommonLispの様に規模の大きな言語は仮想記憶がなければまともに動かすこと はできません。当然、それまでは、かなり大きなスーパーミニコン(VAX-11や MV-2000などという機械)以上の計算機でしか動作しませんでした。 当時もDOS用に、GoldenCommonLispなどいくつか

    sirocco
    sirocco 2010/08/19
    GCL(KCl) は defunの後にdisassembleを行うと、LispソースをC 言語へコンパイルしたものを吐き出す。末尾再帰が goto に置き換えられているのが分かる。
  • Common Lisp

    最初に このページでは、主に Vine Linux 5.x ないしは 6.x での Common Lisp についての備忘録的な内容を書いています。 目次 インストールした実装 (SBCL, CLisp, Clozure CL) 開発環境 (slime) asdf quicklisp マニュアル類 readline (rlwrap) おまけ (Haskell) おまけ (prolog) 実装 Common Lisp にはいくつもの実装がある。ここでは私が使っている以下の3つについてのみ書く。(とはいうものの、mac でも sbcl がまともに動くようになってからは、ほとんど sbcl しか使っていない。) SBCL CLisp Clozure CL slime Common Lisp のプログラミングをするには,Emacs 上で slime を使うと便利。 プログラムを編集しながら,Ema

    sirocco
    sirocco 2010/08/16
    asdf-installというのは Haskellなら cabal 、Ruby なら gemのようなものらしい。
  • Common Lisp : cl-win32ole Excel UsedRange

    Excel に書かれたテーブル仕様書から clsql:def-view-class でテーブルクラスを作り、clsql-sys:create-view-from-class で Postgresql 上にテーブルを作成しました。 Excel から clsql:def-view-class 定義を作るのにはもちろん cl-win32ole を使いました。 最初は Excel のセルを1つずつ見ていかないとだめかな、めんどうだなぁ、と思っていたのですが。 値の入っているセルの範囲を取得できる UsedRange という便利なメソッドを見つけました。 これで、Excel シート上のデータを一括で Lisp のリストとして取得できます。 あとは、Lisp でのリスト操作なので楽々でした♪ UsedRange とっても便利です。 (eval-when (:compile-toplevel :load

  • Common Lisp で OLE ライブラリを作りはじめる

    Common Lisp の OLE ライブラリ(Ruby の Win32OLE みたいなの)がなかったので作りはじめてみました。 ここ数日せっせとハックしてます。 自宅には Windows マシンがないので OS インストールからでした。 Linux マシンの qemu/kvm に Vista をインストール。 ついで Cygwin, Meadow, SBCL, SLIME, VS2008C++Express, WIN32SDK をインストール。 そしてようやく開発開始です。 C ではコードを書かず、cffi を使って Lisp のコードだけで作成する方針でいきます。 VARIANT の union にやられながら、とりあず BOOL, BST, IDispatch だけを実装して、次のコードが動くようになりました。 IE でページを表示してタイトルを取得しています。 Excel のサンプ

  • [Common Lisp]Allegro CLでOLEオートメーション - t2ru's blog

    ;; Allegro CL付属のOLEパッケージをロード (require :ole) ;; WScript.Shellのクライアントインスタンスを作成 (defvar *obj* (ole:ask-for-autotool "WScript.Shell" ole:clsctx_inproc_server)) ;; メソッド呼び出し ;; (ole:auto-method <obj> <method-name-string-or-symbol> &rest <params>) (ole:auto-method *obj* :popup "hogehoge!") ;; すると、「hogehoge!」というポップアップウィンドウが出てくる。 JScriptやVBScriptと同じように呼び出せた。Allegro CL 8.1のsample08に載っている、Excelラッパーの例を参考にした。

    [Common Lisp]Allegro CLでOLEオートメーション - t2ru's blog
    sirocco
    sirocco 2010/08/06
    業務ソフトが SQL Server を使っているのでCOMがないと困る・・・。
  • Revenge of the Nerds

    技術野郎の復讐---Revenge of the Nerds---[訳註1] Paul Graham, May 2002. Copyright 2002 by Paul Graham. これは、Paul Graham:Revenge of the Nerds を、原著者の許可を得て翻訳・公開するものです。 プロジェクト杉田玄白正式参加テキスト。 <版権表示> 和訳テキストの複製、変更、再配布は、この版権表示を残す限り、自由に行って結構です。 (「この版権表示」には上の文も含まれます。すなわち、再配布を禁止してはいけません)。 Copyright 2002 by Paul Graham 原文: http://www.paulgraham.com/icad.html語訳:Shiro Kawai (shiro @ acm.org) <版権表示終り> Paul Graham氏のエッセイをま

    Revenge of the Nerds
    sirocco
    sirocco 2010/07/22
    「Lispは1958年にJohn McCarthyによって最初に発見された。そして、人気のあるプログラミング言語は彼が当時発展させたアイディアにやっと追い付いてきた」
  • Amazon.co.jp: 初めての人のためのLISP 増補改訂版: 竹内郁雄: 本

    Amazon.co.jp: 初めての人のためのLISP 増補改訂版: 竹内郁雄: 本
    sirocco
    sirocco 2010/07/07
    間違えて2回発注してしまって手元に2冊あります・・・Orz
  • Lisp は「C 言語並みに速い」「C 言語より速い場合がある」

    だそうです。 On LispOn Lisp 後注より Gabriel, Richard P. Performance and Standardization. Proceedings of the First International Workshop on Lisp Evolution and Standardization, 1988, p.60ある処理系で triangle を試していて, Gabriel は次のことを発見した:「プログラマが C コンパイラにレジスタ割り当ての指示を与えたときと比べても, C 版の反復による実装よりも Lisp 版のほうが 17% も高速だった.」彼の論文では Lisp で実装したほうが C より高速になるプログラムが他にもいくつか挙がっており, なかには 43% も高速になったものもある. Lisp:よくある誤解Lisp:よくある誤解 「Lisp

    Lisp は「C 言語並みに速い」「C 言語より速い場合がある」
    sirocco
    sirocco 2010/06/20
  • Microsoft - Official Home Page

    すべての Microsoft 製品 Global Microsoft 365 Teams Copilot Windows Surface Xbox セール 法人向け サポート ソフトウェア Windows アプリ AI OneDrive Outlook Skype OneNote Microsoft Teams PC とデバイス Xbox を購入する アクセサリ VR & 複合現実 エンタメ Xbox Game Pass Ultimate Xbox Live Gold Xbox とゲーム PC ゲーム Windows ゲーム 映画テレビ番組 法人向け Microsoft Cloud Microsoft Security Azure Dynamics 365 一般法人向け Microsoft 365 Microsoft Industry Microsoft Power Platform W

  • http://www010.upp.so-net.ne.jp/okshirai/scheme-20070402222203.txt

    Scheme 過去◇現在◇未来 前編 bit/April 1996/Vol. 28, No.4 p4~9 Guy L. Steele Jr. 訳 井田昌之 ---------------------------------------- はじめに ――― 訳者より Schemeの開発者の一人であるGuy L. Steele博士が、1995年7月10日にLisp協議 会のシンポジウムで講演を行なった。場所は青学会館である。稿は、その講 演を元にまとめたものである。その内容は、開発の当事者でしか語れないもの が多く、たとえば、Schemeの発端のいきさつには、Carl Hewitt先生も大きく関 係している点など、訳者にとっても、なるほどと新鮮で興味深いものであった。 当時のMIT人工知能研究所のホットな様子を垣間見た気がした。 文では敬称を略した。登場人物の肩書はどんどん変化したので、

  • Buzz by Rui Ueyama from Buzz

    Lispはなんとなくすごそうというイメージがあるけど、実際にはそれほどでもない。90年代くらいまではGCがあるというだけで、生産性X倍といえたのかもしれないが、いまは良い他の言語がたくさんあって、言語の日常的な使用例で差が特にあるとは思えない。 現代のプログラミングでは充実したライブラリの存在がますます重要になってきている。その点マイナー言語は苦労することが多くて、PythonJavaでさっさと書けることにすごく時間がかかったりする。プログラミング言語はコンピュータに対する命令であると同時に、ほかのプログラマに読んでもらうための文字通りの言語だ。自分でいろいろ作るのも楽しいけど仕事でどっちを使うかというと、みんなが読み書きできて早く終わる方がいい。 プログラマの費やす労力のうちプログラミング言語そのものにかかっているのは一部にすぎない。プログラミング言語は一番目立つ位置にある――字面その

    sirocco
    sirocco 2010/02/14
  • Emacs Lisp基礎文法最速マスター - http://rubikitch.com/に移転しました

    基礎文法最速マスターブームにのっかってみる。Ruby基礎文法最速マスターをだいたいEmacs Lisp(elisp)に置き換えてみる。 Emacs LispはEmacsで使われているLisp方言のひとつだ。他の言語をある程度知っている人はこれを読めばEmacs Lispの基礎をマスターしてEmacs Lispを書くことができるようになるかもしれない。無保証ではあるが。 ある程度はCommon Lispにも応用できると思うよ。 更新情報 [2010/02/03] 注釈の誤りを修正。 let*について加筆。 基礎 対話的にEmacs Lisp式を評価する Emacsを起動したときに生成されている、スクラッチバッファ(*scratch*)を使うと、Emacs Lispの式を簡単に評価することができる。M-Tabで補完できるぞ。 式を書いたらC-jを押すと、式の値が出てくるぞ。 (+ 1 3) 4

    Emacs Lisp基礎文法最速マスター - http://rubikitch.com/に移転しました
  • Multi-Paradigm Language TAO

    国産 Lisp 専用マシン ELIS のマルチパラダイム言語 TAO について.共立出版 bit に連載したもの.

  • 本を読む 「Shibuya.lispテクニカルトーク #4」観覧

    Lispコミュニティ「Shibuya.lisp」のテクニカルセミナーイベント「Shibuya.lispテクニカルトーク#4」が開催されました。 今回は、近山隆さんと竹内郁雄さんが目玉で、単なる昔話に終わらず、濃くて面白い話を聞けました。もちろん、ほかの方々も興味深い話を披露してくれました。発表者の皆さん、スタッフの皆さん、ありがとうございました。 以下、観覧メモ。間違いがあったらご指摘ください。 開会の挨拶(garaemon) Shibuya.lisp Technical Talk 1周年だそうです。ぱちぱち。 次回のテクニカルトークは、いつもの間隔でいうと2010年3月で、みなさんもぜひTalkerに応募してください、との話でした。 1980年前後のLisp事情とUtiLisp(近山 隆) Lispが「実用的な言語」とあまりみなされていなかった時代に、当時としては爆速の処理系UtiLis

  • 『初めての人のためのLISP 増補改訂版(竹内郁雄)』 販売ページ

    amazon.co.jpにてお買い求めください amazon.co.jpへ ※在庫・発送日は遷移先のサイトでご確認ください。 ※当ページ表示の価格とは異なる場合があります。 ※Vポイントや特典等は対象外となりますのでご注意ください。 お気に入りに追加 得票数:44票初めての人のためのLISP

    『初めての人のためのLISP 増補改訂版(竹内郁雄)』 販売ページ
  • S 式ベースC言語における変形規則による言語拡張機構 | CiNii Research

    sirocco
    sirocco 2009/09/03
  • Real Macro Metaprogramming on C

    誰もが知ってるls(1)コマンド ソースはFreeBSDから (simple, no-dependency) 素直で読みやすいコード C言語ソースとしては優等 しかし… 問題点1 - 冗長なコード cmp.c int namecmp(const FTSENT *a, const FTSENT *b) { return (strcoll(a->fts_name, b->fts_name)); } int revnamecmp(const FTSENT *a, const FTSENT *b) { return (strcoll(b->fts_name, a->fts_name)); } 問題点1 - 冗長なコード (cont'd) util.c 同じ構造の4つの関数 while ((clen = mbrtowc(&wc, ...)) != 0) { if (clen == (size_t)-

    sirocco
    sirocco 2009/09/03
    C in S-expression