タグ

lispに関するkazutanakaのブックマーク (29)

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

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

    Lispを実装したくなったら読んでほしい本6選 - Arantium Maestum
  • GitHub - yubrot/scalisp: Small LISP interpreter in Scala

  • デザインの「悪い方がよい」原則 The Rise of "Worse is Better"

    デザインの「悪い方がよい」原則 The Rise of "Worse is Better" rpg@lucid.com 日語訳: daiti-m@is.aist-nara.ac.jp 私や Common Lisp と CLOS のデザイナーのほとんどは、MIT/Stanford 方式の設計に親しんでいる。 この方式の核心は、「正しい」やり方をせよ、という ことにつきる。デザイナーにとっては、以下の点をすべて正しく満たすことが 重要である。 簡潔性 デザインは実装と使用法の両面において単純でなければならない。 このとき、使用法が単純な方が、実装が単純なことより重要である。 正当性 デザインはすべての点において正しいものでなければならない。 誤りは許されない。 一貫性 デザインは一貫性を欠いたものであってはならない。一貫性を保つ ためには完全性は少しだけ犠牲にしてもよい。一貫性は 正当性と同

  • http://www.asahi-net.or.jp/~kc7k-nd/onlisp_j.pdf

  • Contents • Build Your Own Lisp

    Contents • Build Your Own Lisp Chapter 1 • Introduction About Who this is for Why learn C How to learn C Why build a Lisp Your own Lisp Chapter 2 • Installation Setup Text Editor Compiler Hello World Compilation Errors Documentation Chapter 3 • Basics Overview Programs Variables Function Declarations Structure Declarations Pointers Strings Conditionals Loops Chapter 4 • An Interactive Prompt Read,

  • Pythonのリスト内包表記はチューリング完全だから純LISPだって実装できる - Qiita

    まえがき Pythonにはリストに対する操作をさっと書ける、リスト内包表記というものが存在します。こんなやつです: >>> [2*n for n in range(5)] [0, 2, 4, 6, 8] # 等価なfor文 >>> lis = [] >>> for n in range(5): ... lis.append(2*n) ... >>> lis [0, 2, 4, 6, 8] ところでこのリスト内包表記、チューリング完全だって知ってましたか? こちらの記事でそのことが示されています。 リスト内包表記の活用と悪用 by @KTakahiro1729 あああっ! 開かれるPythonワンライナー&難読化の世界!! ステキすぎる!!! 超カッコいい!!!! ……でも、われわれはbrainfxxkだけで満足していてよいのでしょうか。ぼくは、もっと抽象的で、カッコよくて、とっても使いやす

    Pythonのリスト内包表記はチューリング完全だから純LISPだって実装できる - Qiita
  • On Lisp日本語訳 草稿置き場

    On Lisp邦訳 草稿置き場 Japanese texts only! 代表的LispハッカーのPaul Graham氏がご自分のサイト www.paulgraham.com で公開なさっている著書 "On Lisp" の邦訳を,2007年3月にオーム社から出版しました. On Lisp | オーム社eStore(β) On Lisp サポートページ(practical-schemeに間借り) この"On Lisp"は草稿を公開しながら翻訳を進めてきましたが, 草稿は今後もLaTeXソースおよびPDFファイルとして公開を続けていきます. 書籍の出版に当たっては念入りのレビューにより数多くの誤り等が修正されましたが,この草稿は修正前のものです. とは言え大体は「読める」レベルです. 「いきなり買うのはためらわれるけど流し読みしたい」「内容の一部だけ参考にしたい」等の場合に役立つでしょう.

  • Make a Lisp で Lisp 処理系を学んでつくる (with Crystal) - はやくプログラムになりたい

    インタプリタ式の言語処理系を書いたことが無かったので一度実装してみようと思って,この手のは Lisp が定番だということで,前々から気になっていた Make a Lisp (mal) に挑戦してみました. Make a Lisp (mal) とは Make a Lisp は色々な言語で mal という Lisp 方言を実装してみようというプロジェクトです. 30以上の言語での mal 処理系実装 11段階のステップに分けられた実装ガイド(全体の構成図付き) 各実装ステップごとのテストケース といったほしい情報が揃っており,言語処理系初心者でも Lisp 実装について簡単に学べる環境が整っています. 11段階の各ステップは以下の様な感じです. The REPL : 実装を始める準備(自分の言語を Makefile に登録して make 一発でテストを走らせられるようにする,関数のスケルトンの

    Make a Lisp で Lisp 処理系を学んでつくる (with Crystal) - はやくプログラムになりたい
  • 簡略版 S 式の LL(1) 文法による構文 - Tociyuki::Diary

    Lisp 処理系以外でも S 式を解釈できると何かと便利だろうと、BNF を書いてみることにしました。簡略版で十分と、リストはクォートとドット対に限り、複合リテラルは扱わず、シンボルと整数・浮動小数点数・文字列を字句にまとめ記号 ATOM として受け入れることにします。ブロックコメントは使わないことにして、空白と行単位コメントは字句解析で読み飛ばすことにします。ドットは、リストの同一レベルには一回だけ使え、左側には一個以上、右側には一個のリストが必要です。ドットを使わないリストはゼロ個以上のリストの並びになります。最初に、素直に EBNF 風に記述します。 input : list* ; list : '(' list* (list '.' list )? ')' | "'" list | ATOM ;これを BNF へ書き直していきます。input の書き直しは定石通りです。非終端記号

    簡略版 S 式の LL(1) 文法による構文 - Tociyuki::Diary
  • Lecture 1A | MIT 6.001 Structure and Interpretation, 1986

    Overview and Introduction to Lisp Despite the copyright notice on the screen, this course is now offered under a Creative Commons license: BY-NC-SA. Details at http://ocw.mit.edu/terms Subtitles for this course are provided through the generous assistance of Henry Baker, Hoofar Pourzand, Heather Wood, Aleksejs Truhans, Steven Edwards, George Menhorn, and Mahendra Kumar.

    Lecture 1A | MIT 6.001 Structure and Interpretation, 1986
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • Sweet-expressions: A readable format for Lisp-like languages

    Note that you can use traditional math notation for functions; fibfast(n) maps to (fibfast n). Infix processing is marked with {...}; {n <= 2} maps to (<= n 2). Indentation is significant, unless disabled by (...), [...], or {...}. This example uses variable names with embedded "-" characters; that's not a problem, because the infix operators must be surrounded by whitespace and are only used when

  • Lisk - Lisp and Haskell

    I am personally sick of working with Haskell’s syntax.tl;dr: Scroll right to the bottom to read what Lisk is. Most of this post is complaining about Haskell’s syntax. I like Haskell’s syntaxI came to Haskell in early 2008. I wrote my first Haskell program and I didn’t like the look of what I had produced. I also didn’t like typing it. Compared to Scheme and Common Lisp, my previous languages of ch

  • YABUKI Taro’s Home Page | 2018/08/19 フィードのURLが変わりました。

    不完全性定理のLisp, Mathematicaによる記述 Lisp code / Mathematica notebook プログラミング言語なんてどれも同じと思っている人は下の3つをJavaC++で書いてみてほしい 不完全性定理についてのゲーデルの証明の一部 停止問題の解決不可能性についてのチューリングの証明 LISP式がエレガントであることを証明できないというチャイティンの証明 ライプニッツ「役に立たないパラドックスは無い」(チャイティン「知の限界」) ミンスキー「ゲーデルはLispを思いついておくべきだった。もし彼がLispを思いついていたならば彼の不完全性定理の証明はもっと簡単なものになっただろう」(ホフスタッター「メタマジック・ゲーム」) 次の2冊のはLispといってもSchemeのようなオリジナル言語が使われている。ここではCommon LispとEmacs Lisp、M

  • Yabuki Taro’s Home Page

    なぜ Lisp なのか Quote...Unquote ダグラス・R. ホフスタッター著, 竹内郁雄ほか訳『メタマジック・ゲーム』 ミンスキー「ゲーデルは Lisp を思いついておくべきだった。もし彼が Lisp を思いついていたならば彼の不完全性定理の証明はもっと簡単なものになっていただろう」 ゲーデルの証明の一番難しいところは、数学的体系に自分自身を語らせるところにある。天才のひらめきが何段階か必要になる。しかし、Lisp は、少なくともゲーデルが必要としていた意味で、まさに自分自身を直接語ることができる。 ゲーデルは Lisp を発明した! ダイクストラ「謙虚なるプログラマ」 LISPは冗談まじりに「コンピュータを誤用するための、もっとも知的な方法」と言われることがありますが、私はこれはすばらしい褒め言葉だと思います。なぜならこれはあらゆる種類の自由を可能にしているからです。LISP

    kazutanaka
    kazutanaka 2010/09/25
    lisp関連リンク集
  • not found

  • approx-search.el

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

  • CodeZine:JavaScriptでつくるSchemeインタプリタの基礎の基礎(lisp)

    はじめに 現存するプログラミング言語の中で2番目に古いのがLispです。生まれは古くても、いまだに使われ続け、また、Rubyなどの新しい言語にも影響を与えています。そのLispの派生であり、シンプルさが売りなのがSchemeです。 ここではSchemeの簡単なインタプリタをJavaScriptで作ってみます。対象読者 稿はLispやSchemeは少し触ったことはあるけど、インタプリタは書いたことがないという方を読者対象としています。また、JavaScriptの文法や、簡単なデータ構造についての知識を前提とし、説明は省きます。必要な環境 テキストエディタと、JavaScriptが動くWebブラウザがあれば十分です。他に特に用意するものはありません。概要作成するインタプリタについて インタプリタのコードはJavaScriptで書き、HTMLのフォームを使って、Schemeのプログラムの入力お

  • CLISP - GNU CLISP

    英語原文: http://clisp.sourceforge.net/summary.html Common Lisp は高水準、汎用目的、オブジェクト指向、動的、関数型といった 特徴を備えたプログラミング言語です。 CLISP はドイツの Karlsruhe 大学の Bruno Haible、Munich 大学の Michael Stoll らによって開発された Common Lisp の実装です。ANSI Common Lisp に 規定された標準に加えて、多くの拡張を備えた Lisp です。 CLISP はインタプリタとコンパイラ、デバッガ、CLOS、MOP、FFI、国際化メッ セージ、正規表現、ソケットインターフェース、ここに列挙した以上のものを 含んでいます。CLX、Garnet や CLUE/CLIO を通じて X11 インターフェースが 利用可能ですし、コマンドラインの行編集

  • Life with Cygwin

    沖ソフトウェア株式会社は、沖通信システム株式会社および株式会社沖インフォテックと平成22年10月1日をもって合併いたしました。新会社名は、株式会社OKIソフトウェアとなります。3社が行っております事業は新会社にて従来通り継続いたします。