タグ

lispに関するene0kcalのブックマーク (22)

  • Ichigo Lispコンパイラ完全解説

    Ichigo Lispコンパイラ完全解説 はじめに この記事では私がWebAssemblyで書いた Ichigo Lispという LISP 1.5実装のコンパイラのソースコードをすべて解説する。 というのも、最近とあるコンパイラのを読んで 「説明が特定の実装に基づいてる割にそのソースが一部しか載ってない」 という不満を感じたのだが、自分で書いたコンパイラの記事 を読み返してみると、コンパイラのソースコードが一切出てこないことに気づいた。 こんな記事を書きながらよく人様のに不満を持てたものだと 瀬戸内海より深く反省したので、 ここにIchigo Lispのコンパイラのすべてのソースコードを解説する。 想定読者とか Ichigo Lispのコンパイラは(ほとんど)すべてLISP 1.5で書かれている。 LISP 1.5特有のややこしい機能などは使っていないので、 Common Lisp、S

  • Lispを実装したくなったら読んでほしい本6選 - Arantium Maestum

    言語実装 Advent Calendar 2022の1日目の記事として書いた。 Lisp Advent Calendar 2022でも枠が空いていたのでダブル投稿。 プログラミング言語を実装してみたい!と思ったらまずは簡単なLispインタプリタから始めるというのは一つの王道だと思う。 複雑な構文解析は要らず最低限の再帰下降法パーサで手に入る構文木を、そのまま再帰的な関数で実行していくtree walking評価器。メモリ確保もヒープにそのまま置いていって、メモリ解放は実装言語のGCに任せるなりプログラムの終了時までやらなかったり。そんなインタプリタを作る経験から得られるものは非常に大きく、どんなプログラマでも一回は試してみてもいいのではないか?と思っている。(個人的な感想です) そんな簡易Lispを実装してみて沼にハマってしまい、より精緻な言語処理系を作りたいと思ったとする。その時点で:

    Lispを実装したくなったら読んでほしい本6選 - Arantium Maestum
  • 6.16 Why Lisp

    Version française Lisp is not dead. For a language born at the end of the 50's, this is a happy but also very surprising fact. The success of Clojure or the remarkable resistance of Common Lisp represent a kind of anomaly in a world dominated by javascript and Python... By the way, javascript is in fact a Lisp in disguise. Well, Lisp is not dead, and since the proof has to be in the pudding, we wi

    6.16 Why Lisp
  • Googleスプレッドシートの名前付き関数でLISPインタプリタを作った

    Googleスプレッドシートの名前付き関数でLISPインタプリタを作った はじめに こんなの を作った。 エラーチェックをサボっていたり、 少し複雑な計算をすると途中で打ち切られたりするが、 それなりに遊べるはず。 Googleスプレッドシートとは Googleスプレッドシートはいわゆる表計算ソフト。 表に色々入力したり、色々計算させたりする。 =SUM(A2:A10) とか書くと2行A列から10行A列までの合計を計算してくれたりする。 スクリーンショットを貼り付けるためのソフトではないはず。 名前付き関数とは Googleスプレッドシートには前述のSUMの他にも色々関数があるが、 ユーザが自分で新しい関数を定義することもでる。 例えばNの階乗を求める関数を定義してみよう。 メニューの [データ] - [名前付き関数] を選択し、 [新しい関数を追加] をクリック。 [関数名] に FA

    ene0kcal
    ene0kcal 2022/10/03
    なんとおぞましい(褒めてる)。
  • Emacs の起動時間を""詰める"" - Qiita

    おしらせ : 長い記事は形式になっていた方が読みやすそうなので、 Zenn に お引越し してみました。ここにも記事は残しておきますが、最新版はあちらになります。 Emacs はプラグインを増やしていくと起動に何秒もかかって重い、という話をみることがあります。 しかし、考えてみれば Emacs には 1000 以上の Emacs Lisp ファイルが初めから同梱されているわけで、そこに数十のプラグインを足しただけで爆裂に遅くなるのは、なにか設定にも問題がある気がします。 この記事では、 Emacs の起動時間を詰めるために今までに試してきた、小技や大技たちを紹介します。 自分用にメンテしているフレームワーク setup.el で活用しているテクニックが主なので、そちらを試してみて欲しい気持ちもありますが、それぞれの Tips 単体でも価値があると思うので記事にもまとめてみることにしました

    Emacs の起動時間を""詰める"" - Qiita
  • Lispはなぜ覇権を握らなかったのでしょうか?

    回答 (9件中の1件目) 広く普及しているとは言い難いですが、今でも新しい製品に採用されることはあります。 数年前、私はあるiOSとAndroid向けのゲーム開発に携わっていました。中でもAIの出来が面白さに大きな影響を与える種類のものでした。 プログラマーの同僚が1人、Lispに大変に強い思い入れがあり、そのAIは同僚の作ったLispインタプリタで動作しています。構文解析が簡単で、ゲームデザイナーのあーしたい、こーしたいの要望にもインタプリタの拡張で対応できる柔軟さがありました。 また別の同僚は、Lisp方言のClojureでゲーム開発の効率を高める特別なコンパイラを書いていまし...

    Lispはなぜ覇権を握らなかったのでしょうか?
    ene0kcal
    ene0kcal 2020/09/04
    QuoraやQiitaにLispに関することを書けば、大御所がみてくれるハックかなぁ。
  • 15パズル

    最近, 高木貞治先生の「数学小景」を眺めていたら, その中に「十五の駒遊び」という題で15パズルの話があった. ところで, 最近知った15パズルの面白い解き方は, 福岡教育大学の藤さんの提案する「回転型操作」によるものだ. 2件の論文がある. 情報処理学会研究報告にある「スライドパズルにおける回転型操作とアクセスビリティ」と, 近着の数式処理にある「Loop generatorによる15パズルの最適アルゴリズムとGod's numberについて」. 私は明解な手順には関心があるが, 最短手順には興味がないので, 後の論文は眺めた程度であった. 前の論文も解法は数式処理しシステムGAPを使って記述してあるので, GAPに馴染まぬ凡人にはとんと理解し得ぬ. 以下では私がSchemeで書いたプログラムの考え方を述べる. この回転操作(英語ではloop generatorというらしい)は, 前回

  • 「神がいない言語」を操るハッカーはいかにして生まれたか | 日経 xTECH(クロステック)

    「異能」ともいえる際立った能力や実績を持ち、周りから一目置かれるエンジニアを1カ月に1人ずつ取り上げ、インタビューを掲載する。今月取り上げるのは、ポケットチェンジで新サービスの開発責任者を務める深町英太郎氏。Common Lispというプログラミング言語を得意とし、多くのオープンソースソフトウエアを公開していることで知られる。今回は、Common Lispに出合った経緯を中心に聞いた。 情報科学科を選んだのは、そもそもプログラミングをやりたいと思っていたからです。理由はWebの原体験です。中学生の頃に病気になって学校に行けなくなったときに、家に引きこもってゲームをしたりしていました。 友達と会う機会もなく孤独を感じていました。そんなときにWebに自分のことを書いて他の人が読んでフィードバックをくれるのが自分にとっての救いでした。そこでWebサービスを作りたいと思い、そうしたことができる大学

    「神がいない言語」を操るハッカーはいかにして生まれたか | 日経 xTECH(クロステック)
  • Lispのアイデア | POSTD

    Lispと聞くと、冷蔵庫のような大きいサイズのコンピュータや、大文字のアルファベット文字列や括弧の並びといったような過去の時代のことが頭に浮かびます。そう、非常に多くの括弧。何故、オブジェクト指向プログラミングの作成者たちは、そんなにもLispの アイデア に魅了されるのでしょうか。そしてまた、アイデアとされるプログラミング言語というものは、どうやったら説明できるでしょうか。こうしたことを教えてくれなかったコンピュータ科学の教育を責めるべきでしょうか。 Lispは、John McCarthyが書いた Recursive Functions of Symbolic Expressions and Their Interpretation by Machines, Part I という論文によって、初めて世界に登場しました。その中で、McCarthyはプログラミングに新しい多くのアイデアを導入

    Lispのアイデア | POSTD
  • Lisperはプログラムに何を見るか - 八発白中

    男子校に通う中学生の僕らにとって「家庭科」の授業は休憩時間のようなものだった。 僕の中学校には家庭科室というものがない。だから、いつもの教室で野菜の種類やそれに含まれる栄養素なんかを教わるというだけの、正直退屈な授業だった。話される内容はどれもただ暗記すればいいものなので、授業を聴かなくても定期試験前に教科書を読み通すだけで九〇点は取れる教科だった。 学校としても文科省の教育課程に沿うがためだけに時間割にねじ込んでいるに過ぎなかったと思う。特別教室がないことでも真面目にこの教科を取り扱う気がないことがわかるし、生徒の方でもその学校の態度を敏感に感じとっていた。 そんなやる気のない男子学生の前に立って話すのは教師にとって楽しいものではなかっただろう。僕らの先生は、落ち着いた雰囲気でどこかしたたかさのある、髪の長い女の先生だった。 その日も彼女はいつも通り、キノコに含まれる何々という栄養素が、

    Lisperはプログラムに何を見るか - 八発白中
  • Common Lispとリアル・ワールドを繋ぐ「Roswell」の紹介 - 八発白中

    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用のインストーラス

    Common Lispとリアル・ワールドを繋ぐ「Roswell」の紹介 - 八発白中
  • Island Life - クロージャの比較、あるいは「同じ」とはどういうことか

    About 南の島のプログラマ。 たまに役者。 Practical Schemeの主。 WiLiKi:Shiro 最近のエントリ 無限cxr高校受験Defense振り返ってみると2019年は色々学んで楽...覚えるより忘れる方が難しい(こともある)眼鏡のつると3DプリンタIris Klein Acting ClassSAG-AFTRA conservatory: Voice Acting創作活動って自分を晒け出さねばならないと...ループを使わずに1から100までMore... 最近のコメント shiro on 歳を取ると時間が速く過ぎるのは、新しいことに挑戦しないから? (2023/03/14)1357 on 歳を取ると時間が速く過ぎるのは、新しいことに挑戦しないから? (2023/03/01)ベアトリーチェ on ハイポハイポハイポのシューリンガン (2022/04/02)ベアトリーチ

    Island Life - クロージャの比較、あるいは「同じ」とはどういうことか
  • 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コードを書く - 八発白中
  • 長文日記

    長文日記
    ene0kcal
    ene0kcal 2014/01/23
    クラッシュバンディクーでlispがつかわれたのはゲームシステム全体ではなく、キャラクターモーションに関わる部分に使われたと昔読んだ。モーションデータ生成なのか管理なのかはわからない。
  • Scheme手習い - The Little Schemer -:Geekなぺーじ

    最近、私のまわりでは様々な角度から多面的に話題な"Lisp"ですが、20年以上の歴史を持つLisp解説書の日語翻訳版が2010年10月22日に新発売されます。 「Scheme手習い」です。 最近、私はインターネットのカタチに関して語るというをオーム社で執筆しているのですが、そこでお世話になっている編集の方の熱い想いが、この訳を実現しました。 この書籍への熱い想いがネット越しに伝わって来たので、遅れ遅れになっている私の原稿に関するミーティングを含めて、お話を聞きに行ってきました。 第4版の版権を得て翻訳 原著のおおもとである「The Little LISPer」は1974年にまでさかのぼります。 原著は何度か版が変わっていますが、1990年に邦題「Shecme手習い - 直感で学ぶLisp」としてマグロウヒル出版から刊行されたのは、1987年の版でした。 しかし、マグロウヒル出版の解散

  • xyzzy 関連 - browserex

    泰三さんの html+-mode 等で s.oowada さんの browser.dll、 いまいたけをさんの browser.dll 拡張版 を便利に使わせてもらう。 browser.l と同様に browser.dll を使用するためのサンプル Lisp ファイルです。主に HTML ファイルのプレビューアとして browser.dll を利用することを想定しています。 出来ること: 入力された URL の内容の表示 表示内容の再描画 開いているかどうかの判定 閉じる 表示開始時(開くとき)のみ有効な表示位置(上下左右、高さ or 幅)指定 xyzzy 上の表示位置(上下左右)の変更とその位置の自動保存 カレントバッファのファイル内容表示 ファイル名を持たないカレントバッファの内容を文字コード・改行コードを保ったままテンポラリファイルに出力し、HTML ファイルとして表示 カレント

  • 素人のアダルトライブチャットDXLIVE 新着の女の子推薦文

  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • ((Pythonで) 書く ((さらに良い) Lisp) インタプリタ)

    ((Pythonで) 書く ((さらに良い) Lisp) インタプリタ) Peter Norvig / 青木靖 訳 前のエッセイでは、90行のPythonコードでシンプルなLispインタプリタを書く方法を示した(lis.py)。このエッセイでは、3倍込み入っているが、より完全なlispy.pyを実装しよう。それぞれの節で1つの機能追加を扱っている。 (1) 新しいデータ型 - 文字列、論理型、複素数、ポート Lispyへの新しいデータ型の追加は3つの部分からなる。データの内部表現、それを扱う手続き、読み書きのためのシンタックスだ。ここでは4つの型を追加する(入力ポート以外はPythonのネイティブ表現をそのまま使う)。 文字列 文字列リテラルはダブルクォーテーションで囲まれる。文字列の中で \n は改行を、\" はダブルクォーテーションを意味する。論理型  構文 #t と #f はTrue

  • ((Pythonで) 書く (Lisp) インタプリタ)

    Peter Norvig / 青木靖 訳 このページには2つの目的がある。コンピュータ言語の実装について一般的な記述をすることと、Lispの方言であるSchemeのサブセットをPythonで実装する具体的な方法を示すことである。私はこのインタプリタをLispy (lis.py)と呼ぶ。何年か前に私はJavaとCommon LispでSchemeインタプリタを書く方法を示した。今回の目標は、アラン・ケイが「ソフトウェアのマクスウェル方程式」と呼んだところの簡潔さと取っつきやすさを可能な限り実現するということだ。 SchemeのサブセットLispy の構文と意味論 コンピュータ言語の多くは様々な構文的な決まり(キーワード、中置演算子、カッコ、演算子優先順、ドット記法、セミコロンなど)を持っているが、Lisp族言語の1つとして、Schemeの構文はすべてカッコ付きの前置記法であるリストを基とし