タグ

lispに関するuokadaのブックマーク (24)

  • 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
    uokada
    uokada 2022/12/01
    "言語実装 Advent Calendar 2022の1日目の記事として書いた。" このカレンダーのエントリー全部読みたい。
  • とほほのLISP入門 - とほほのWWW入門

    LISPとは インストール Hello world REPL (Read-Eval-Print Loop) スクリプト実行 FASLファイル 実行ファイル コメント S式 Lispで扱える型 出力 文字列出力(write, write-line) 文字列・数字出力(print, princ, prin1) 改行出力(terpri) フォーマット(format) アトム(atom) 数値(number) 整数(integer) 小数(float) 分数(ratio) 複素数(complex) 文字列(string) 文字(character) シンボル(symbol) 真偽値(t/nil) リスト(list) リスト(list) 空リスト(()/nil) 要素抽出(car, cdr, first, second, ..., rest) リストの長さ(length) リスト連結(append)

  • Lisp入門 - WisdomSoft

    Lisp入門 この講座は Common Lisp(ANSI X3.226-1994) に準拠しています。 Common Lispとは? 関数と式 数値データ 文字データ 変数 リスト リストの評価 値の比較 if特別式 progn特別式 condとcase tagbodyとgo ブロック 繰り返し処理 関数の定義 戻る

  • (How to Write a (Lisp) Interpreter (in Python))

    This page has two purposes: to describe how to implement computer language interpreters in general, and in particular to build an interpreter for most of the Scheme dialect of Lisp using Python 3 as the implementation language. I call my language and interpreter Lispy (lis.py). Years ago, I showed how to write a semi-practical Scheme interpreter Java and in in Common Lisp). This time around the go

  • Lisp:よくある誤解

    Lispについてのよくある誤解と、その中にあるちょっとした真実 はてなの質問: プログラミング言語で最強(スケーラブル)なのは、 Lispだと思われます。 http://jp.franz.com/index.html しかし、 世間ではマイナー言語のようです。 なぜでしょうか。 についた回答のいくつかには、「Lispを少しだけかじった人がしがちな誤解」が 含まれてるようなので、それをネタに少し解説してみます。 ただ、誤解が生じるのは、やっぱりそれなりの理由があって、従ってその 誤解の中にも(条件つきの)真実が含まれていることがあります。 そのへんまでをも含めて考えてみましょう。以降、引用は回答からです。 Lispはスクリプト言語? 一昔前まで、これらのスクリプト系の言語は「とてつもなく遅い」のが嫌われる最大の要因でしたが、最近のコンピューターの性能向上でようやくRuby,Python,Li

    Lisp:よくある誤解
    uokada
    uokada 2013/01/07
  • (How to Write a (Lisp) Interpreter (in Perl)) - tokuhirom's blog

    (How to Write a (Lisp) Interpreter (in Perl)) lisp インタープリタを Perl でかいた。前から lis.pl をつかってみたかったのでちょうどよかった。 元ネタはこちら 日語: http://www.aoky.net/articles/peter_norvig/lispy.htm 英語: http://norvig.com/lispy.html perl の強力な機能をつかいこなすことで非常に簡単に lisp を実装できる。汎用性をたかめるためにちょいちょい細工してるので python のやつより長いけどね。質的にはあんま量かわらないです。 Parse は非常に手抜きなのはソースをみればわかるとおりです。元のやつがそうだからですが。 全ソースはこちら。 use strict; use warnings; use utf8; use 5

  • Python の map, filter, reduce とリスト内包表記

    1. リストを操作する関数で重要なのはどれ? リスト内包表記は慣れたら使いやすい Python のリスト内包表記に出会って 4 ヶ月が経った。 「Python のリスト内包表記」を読みなおしてみると、 … 同じく数値のリストから、特定の条件に合う要素を抽出する。 print [x for x in [1,2,3,4,5] if x > 3] これまた読みにくい。 (@_@;) と書いていたけれど、今では「シンプルで読みやすく、また書きやすい」と思える。慣れとは恐ろしい。 ^^; (リスト内包表記がネストしてたりすると、すぐに理解出来ないけれど。) Ruby の Enumerable モジュールにはたくさんのメソッドが定義されている Java しか知らなかった頃、Ruby の 配列に定義されているメソッドを見て、「便利なメソッドがたくさんあるなぁ」と思った。Ruby の配列は、Enumera

  • Scheme -- 犬飼 大

    x ...インストールできませんでした。 / ...インストールしていません。 * 現在(6.0-CURRENTと5.3-STABLE)はシステムのCコンパイ ラーに過渡的な問題があり、SCMをportsからインストールしようとし てもbrokenマークが付けられてインストールできないように見えてい ます。/usr/ports/lang/scm/Makefileを書き換えてbroken行を外し、 makeに引数を渡してコンパイルすれば動作するSCMを作成できますの で、次を参照して下さい http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/71684 ** 6.0-CURRENT % cc -v Using built-in specs. Configured with: FreeBSD/i386 system compiler T

  • OOエンジニアの輪! 〜 第 21 回 川合史朗 さんの巻 〜

    Hope is a good thing, maybe the best of things, and no good thing ever dies. (希望は良いもの、おそらく最上のものだ。そして、良いものは決して消えない。:『ショーシャンクの空に』より) 高林さんとのつながり -- 今回は、高林さんからのご紹介ですが、どういったつながりですか? 実は、直接お会いしたことは一度もないんです。一番最初はですね、Paul Graham の『Beating the Averages』 っていうのを、私が翻訳(邦題『普通のやつらの上を行け』)させて頂きまして、それの感想をメールで頂いたのがきっかけです。それから、私が開発している Scheme 処理系(Gauche)を使って頂いています。 -- 川合さんにとって翻訳って、あれは自分で読んで面白いものをみんなに見てもらう、っていうところですか?

    OOエンジニアの輪! 〜 第 21 回 川合史朗 さんの巻 〜
  • プログラマは皆どのようにしてLisperと化して行くのか?

    LispでWebサービスを作ればYahoo!に60億で買ってもらえると聞いて 実はCと同じくらい速いコードが書けると聞いて ルンバがLispで書かれていると聞いて リリカルなので 面接で笑われてカッとなった マンガでわかるらしいので iPhoneアプリが開発できると聞いて iアプリでLispが書けると聞いて 初めて手に入れたポケコンがAI-1000だった ハッカーと画家を読んでしまった 普通のやつらの上を行きたいので 舌足らずなので セグウェイを制御するコードが一日で書けるようになると聞いて How to become a Hackerを読んだ 専用の求人情報に応募できると聞いて プログラミングClojureを読んだ 初めての人のためのLispを読んだ 自前のLispで書かれた将棋が強かったので LispとPostScriptがあればハッピーになれると聞いて LOLの熱にあてられた On

    プログラマは皆どのようにしてLisperと化して行くのか?
  • 普通のやつらの上を行け ---Beating the Averages---Beating the Averages

    普通のやつらの上を行け ---Beating the Averages--- 著者:Paul Graham Copyright 2001 by Paul Graham これは、Paul Graham: Beating the Averages を、原著者の許可を得て翻訳・公開するものです。 プロジェクト杉田玄白正式参加テキスト。 <版権表示> 和訳テキストの複製、変更、再配布は、この版権表示を残す限り、自由に行って結構です。 (「この版権表示」には上の文も含まれます。すなわち、再配布を禁止してはいけません)。 Copyright 2001 by Paul Graham 原文: http://www.paulgraham.com/avg.html語訳:Shiro Kawai (shiro @ acm.org) <版権表示終り> 文中、Eric Raymondの "How to bec

    普通のやつらの上を行け ---Beating the Averages---Beating the Averages
  • 「計算機プログラムの構造と解釈(SICP)」を読み終えて by なつたん - なつたん

    ひげぽんさんの所をパクってテンプレートにして書いてみました。 練習問題をスキップしつつ、私も約半年でで読み終えました。とても楽しい日々を過ごすことができました。 SICPを読む過程で得たもの ・遅延評価とstream ・制約プログラミング、ロジックプログラミング、amb ・Emacs(Meadow)+gauche+Quackの組み合わせ便利 ・同じ事を表現するのに、抽象度を上げたり、下げたりできること。 ・手加減してあればLispのソースも追えるようになった。手加減していないのは駄目。 ・Lisp特有の、手続きを評価する→S式ができる→また評価する→S式ができる、という気持ち悪い再帰の存在。 ・SICP読み仲間ではないけどいろんなblogつながり。組み込みとFPGAだけでない、いろんな世界がある事をあらためて感じた。 SICPを読みはじめたときの動機を振り返る ・関数型言語について Lis

    「計算機プログラムの構造と解釈(SICP)」を読み終えて by なつたん - なつたん
  • 数理システム/Franz Lisp seminar 2006/11/21. based on LLRing Language Update: Lisp

    Lispとは 何か ---- プログラミングの 母なる海 ---- 東洋哲学を コンピュータ上で 具現 \(^O^)/ ---- 1958年最初の実装開始 最も古い言語の1つ (FORTRANの次に古い) ---- 理論基盤は λカリキュラス ---- シンタックスは S式 ---- 言語は 50年間 変わってない ---- よって Language Update なし! \(^O^)/ ---- これで終わっては あんまり^^; ---- だもんで Lispに対する 意識をUpdate \(^O^)/ ---- じゃ、 Schemeや Common Lispは 何? ---- ライブラリと マクロに 関する 停戦協定 \(^O^)/ ---- なぜ、 停戦協定が 必要なの? ---- あまりに自由なので みんな 好き放題やった ---- 人の数だけ Lispができた ---- 内戦が続い

  • バベル案内

    Steve Yegge / 青木靖 訳 2004年9月 これは駆け足の言語案内だ — Amazon Developers Journalのために今月書いていたのだが、どうもこれを見苦しくないようにする方法を見つけられなかった・・・。 ひとつには、私はどうも粗野で口汚くなりがちで、オフィシャルな趣のあるAmazonの出版物に載せるのは不適切に思えた。それでかわりに誰も読まない自分のブログに押し込めてしまうことにした。読んでるのはあなたくらいのものだよ。どうも! もうひとつ言うと、これは当に書きかけのものであり、そこかしこの断片を集めたものでしかない。全然磨き上げられていない。これもブログエントリにする理由になっている。ブログなら別に良質である必要も完全である必要もない。単に私が今日考えたことというだけのものだ。ではお楽しみを! この駆け足の案内では、C、C++、Lisp、JavaPerl

  • https://www.unixuser.org/~euske/doc/python/python-lisp-j.html

  • 一歩上行くPythonistaが読むべきコード | TRIVIAL TECHNOLOGIES 4 @ats のイクメン日記

    みんなのIoT/みんなのPythonの著者。二子玉近く160平米の庭付き一戸建てに嫁/息子/娘/わんこと暮らしてます。月間1000万PV/150万UUのWebサービス運営中。 免責事項 プライバシーポリシー まあいろいろあると思うけど,あんまり古いのだとスタイルがアレでダメだし,今風でとりあえず読んでてためになるし面白いなー,と思うのはGoogleで働いてるPeter Norvingさんのコードかな。短めで読みやすいし。 How to Write a Spelling Collector(スペル修正プログラムを書く方法) Solving Enery Sudoku Puzzle(数独パズルを解く) この人は他にもPython IAQ(Infrequentry Asked Question,滅多にでない質問集)とかJava IAQとか,How to Write a (Lisp) Intrepr

  • 傍から見ると、 プログラミング言語で最強(スケーラブル)なのは、 Lispだと思われます。…

    傍から見ると、 プログラミング言語で最強(スケーラブル)なのは、 Lispだと思われます。 http://jp.franz.com/index.html しかし、 世間ではマイナー言語のようです。 なぜでしょうか。 習得が難しいのだとしたら、 どのくらい難しいのでしょうか。

  • TSNET - Text and Scripting Network

    テキスト処理とスクリプト言語を中心に取り扱います。

  • On the Relationship Between Python and Lisp

    PythonとLispの関係について Paul Prescod 日語訳:Shiro Kawai (shiro @ acm.org) これは、 Paul Prescod:On the Relationship Between Python and Lisp を、原著者の許可を得て翻訳・公開するものです。 2002/06/02 翻訳公開 Lispは時代のはるか先を行っていた。 Lispは最初の高級言語だったから、それ以降に現れた良いものは全てLispの再発明だ、 と信じたくなる人々がいる。 JavaはLispだ。XMLもLispだ(違うのだが)。 そして今度は、PythonはLispだそうだ。 有名なLispエキスパートである Paul Grahamが提示した話はこうだ。 彼が議論に選んだ3つの言語、JavaPerlPythonのうち、 PythonPerlより(ポピュラーではないにせ

    On the Relationship Between Python and Lisp