タグ

Schemeとlispに関するyuuhi10のブックマーク (34)

  • A正規形まとめ - Scheme VM を書く - higepon blog

    A正規形についてまとめました。日語の資料があまりに少ないのでまとめたのですが、正直理解できているか不安です。間違いを含んでいる可能性がある点にご注意ください。 間違いのご指摘やツッコミ大歓迎です。 あと念のため書いておきますが題材は、Schemeですが、A正規形自体はLispやSchemeに特化した話ではなく、もっと一般的な話です。 A正規形の論文 The Essence of Compiling with Continuations - Flanagan, Sabry, Duba, Felleisen (ResearchIndex)という論文で解説されています。 この論文を読んで自分なりに理解できたことをここに書いています。 理解の前提 Scheme の let 式が分かっていないと理解が難しいかもしれません。 A正規形は何の役にたちますか? コンパイラのコード生成時の中間表現として使

    A正規形まとめ - Scheme VM を書く - higepon blog
  • まったく初めての人のためのScheme

    田無の権兵衛とk先生をお借りいたします、竹内郁雄先生。 田無の権兵衛:(突然、玄関先で大声) たのもーう。 K: なんだ、騒々しいな。やや、田無の権兵衛ではないか。達者であったか。ささ、上がりなさい。 久しぶりじゃのう。今まで何をなさってたのかな。 田無の権兵衛: 実は昭和の終わりごろ、Lispの修行をするためにインドに旅立ちました。 山奥に篭って修行すること25年。やっと少しはLisp道を極めたように思い、懐かしい日に帰ってまいりました。 K: おお、それは難儀であったな。久しぶりの再会じゃ、今夜はLisp話を酒の肴に語り明かそうではないか。 田無の権兵衛: それはかたじけない。そうそう、日に帰ってきて驚いたのです。日人はみんなスーパーコンピューターを 所有しているですか? K: いや、いくら日人が猛烈に働いて豊かになったとは言え、スーパーコンピューターを個人で所有している

  • Husk Scheme

    What is husk? husk is a practical implementation of the Scheme programming language for the Haskell Platform. A superset of the R5RS standard is provided, along with most of the R7RS standard. Advanced features include: First-class continuations of unlimited extent Hygienic macros based on syntax-rules Low-level explicit renaming macros Library syntax from the R7RS standard A foreign function inte

  • Gauche練習帳 format関数完全マスター - aike’s blog

    だいぶGaucheに慣れてきました。今回は文字列の出力方法をこまかく指定するためのformat関数について書式を調べてみました。もともとK&R脳なのでprintfとの比較もしてみます。 Scheme言語ではprintf/sprintfのような書式指定にformat関数を使います。SRFI-28として規定されているのは、~a ~s ~% ~~ の4種類のシンプルなパターンのみなので、実用的な処理系としては独自に拡張することが必要になります。 Gaucheの場合、Common Lispを参考にformat関数の書式指定が実装されているとのこと。また汎用の多機能ライブラリSLIBをインストールするとさらに多くの書式が使えます。 Gaucheのみの場合 Common Lispのformatの一部(+独自拡張?) パディングやカンマ挿入の機能が豊富 16進数の大文字小文字が指定できる 実数の書式指定

    Gauche練習帳 format関数完全マスター - aike’s blog
  • Karetta|Gaucheプログラミング(立読み版)|EmacsからGaucheを使う

    EmacsにはScheme-modeというSchemeプログラミングをサポートするための環境があります。ここではGaucheとEmacsを使ってプログラミングするための 簡単なEmacsの設定について説明します。 まずは、Emacsの設定ファイル(.emacsなど)を開いて下さい。 初めに日語などを扱えるようにするためにエンコーディングを決めます。 (setq process-coding-system-alist (cons '("gosh" utf-8 . utf-8) process-coding-system-alist)) GaucheのデフォルトのエンコーディングはUTF-8となっているのでここではutf-8と書きました。もしEUC-JPならeuc-jp、Shift-JISならshift-jisと書いてください。 後は以下を設定に加えてください。 (setq scheme-p

  • Three Dogmas of Scheme

    Three Dogmas of Scheme (Recursion, Single name space and Continuation) R6RS にざっと目を通して一番驚いたのはそれまでの表示意味論が捨てられてしまっていることでした。 しかし 表示意味論 を捨てるなら以下に並べる Scheme 三つのドグマも捨てられなきゃ嘘だろう、ということでコメントしてみます。 Recursion (再帰) Scheme は何でも再帰です。 後で示すように、一見 iteration のような格好をしている構文ですら、 一旦末尾再帰に置き換えられてから実行されます。 つまり Scheme はその仕様に iteration を持ちません。 これが関数型プログラミングと関係の深い表示意味論からの要請であったことは容易に想像がつきます。 しかし、表示意味論が捨てられた今、反復制御構造に recursion

  • Schemeインタプリタ作ったので実装の方針とか苦労した点などまとめてみる(いろいろ追記 - IT系で覚醒めたい

    一昨日ブログに書いたPicricというScheme処理系について、プログラミングしたときの方針とか、そのへんをまとめてみます。 Scheme(Lisp)の処理系は実装が簡単簡単と言われる割にその実装方法についてまとめられたサイトがほとんどなくて、僕自身調べるのにかなり苦労しました。もうこれ以上僕みたいな犠牲者を出したくありません。 とはいえいろいろ間違ってる箇所もあるかと思いますので気づいた方はコメントをおねがいします。 まずPicricについて。 実は昔々(今年春)NLispというものを作った。 Pythonで実装されたSchemeのサブセット。 継続が実装されていなかった。 今度こそは継続を!pythonからも脱脚して一人前になりたい! そんな動機で開発を始める。 名前の由来はピクリン酸。 ピクリン酸はそのやたら可愛い名前にも関わらず実はものすごい爆薬。 そういう「意外とすごい」インタ

  • Scheme プログラミング入門

    back (技術評論社 Software Design誌 2000年 7月号 に掲載された、「Scheme への招待 〜 GNU標準のスクリプト言語入門」の 記事を加筆修正したものです *1) はじめに みなさんは Lisp をご存じでしょうか。Lisp は 1950年代後半*2に John McCarthy によって 開発されたプログラミング言語で、 おもに記号処理などの分野で今も利用されています。 Scheme は Lisp から派生した言語のひとつで、 Guy Lewis Steele Jr. および Gerald Jay Sussman によって 1975年に開発されました。Scheme はよく 「Lisp の方言」などと呼ばれますが、Lisp よりも簡単な仕様 で、それでいて複雑なプログラミングが可能なように設計されています。 どのプログラミング言語にも長所と短所がありますが、S

  • SXML

    この文書は Oleg Kiselyov 氏による SXML revision 3.0 仕様書を勝手に翻訳したものです。 原著の最新版は http://okmij.org/ftp/Scheme/SXML.html にあります。 仕様として正式なのはあくまで原著です。 この文書には翻訳上のあやまりがあるかもしれません。 御自身の責任で御利用ください。 このページは SXML revision 3.0 の仕様を定める。 SXML は XML 文書の抽象構文木であり、 XML Infoset の S 式による具象表現でもある。 SXML は、一般的な木構造をしていることにより、 問い合わせ、変換用のコンパクトなコンビネーターライブラリを備えることができた。 SXML の仕様書の原はそれ自体 SXML で書かれている。 この Web ページはその SXML コードを適当な「スタイルシート」で 変換

  • Nendo -- * Nendo programming language

    Nendo is a dynamic programming language built on top of Ruby environment. It is designed to be a macro language of Ruby.

  • ((Rubyで) 書く (Lisp) インタプリタ) - hp12c

    ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。 ((Rubyで) 書く (Lisp) インタプリタ) : melborne.github.com - Peter Norvigさんの((Pythonで) 書く (Lisp) インタプリタ) という記事(青木靖さん訳)がすごい 100行ほどのPythonコードで Schemeのインタプリタの基部分を書いている Pythonのコードは見た目がRubyのコードとよく似ているので Rubyしか知らない僕でも何となく読める この記事を解読してRuby版Schemeインタプリタを書いたら インタプリタ Pyhon Scheme それからRubyのことも もう少し分かるようになるかもしれない こんなお得な勉強方法はないぞ きっと そんなわけで... 以下では上記記事を参照し

    ((Rubyで) 書く (Lisp) インタプリタ) - hp12c
  • RubyでSchemeを作ってみたよ今度こそ。 - <s>gnarl,</s>技術メモ”’<marquee><textarea>¥

    ちゃんとREPLでインタープリット!末尾再帰最適化!継続なし!(でも原理的にはすぐ実装できるはず……!)中間言語方式! class Cons def initialize(a,d) @car=a @cdr=d end attr_accessor :car attr_accessor :cdr def cadr cdr.car end def caddr cdr.cadr end def cadddr cdr.caddr end def cddr cdr.cdr end def to_a return [car] if cdr.nil? return [car] + cdr.to_a if cons? cdr raise 'not proper list' end def length return 1 if cdr.nil? return 1 + cdr.length raise 'not

    RubyでSchemeを作ってみたよ今度こそ。 - <s>gnarl,</s>技術メモ”’<marquee><textarea>¥
  • Practical Scheme

    This page is a collection of libraries and extensions to use Scheme as a production tool. By "production tools" I mean the tools to process daily chores for systems engineers and programmers---parsing files, generate reports, watching processes, providing small GUI wrappers, and all sorts of those things. Currently I'm using Perl for those purpose, but I'm always longing to use Scheme for them. So

    Practical Scheme
  • Google Code Archive - Long-term storage for Google Code Project Hosting.

    Code Archive Skip to content Google About Google Privacy Terms

  • Hop.js

    Hop.js: a multitier JavaScriptHop.js (aka Hop) is: A multitier JavaScript: a single code runs on the client and the server. A compliant JavaScript implementation: EcmaScript 5.1 compliant; EcmaScript 6 features (modules, async/await, proxy objects, ...); Nodejs compatibility. An extended JavaScript: builtin HTML: native HTML syntax support and multitier dom. server-side web workers. native websock

  • 用語集

    GC GC とはガベージコレクション(Garbage Collection)、「ごみ集め」の意味。 コンピュータでごみ集めと言えば「使わなくなったメモリを自動的に解放すること」 を言う。C で言えば、mallocしたメモリのうち 使わなくなったものを free してまわることが相当する。 どこかで「使えるメモリがこまぎれになっているのを整理するのが GC」 と書いてあったのだがそれは二次的な目的だ。実際、メモリの回収はしても つめなおし (compaction) はしない GC も多い。Ruby の GC もつめなおしは やらない。 lisp リスプ。LISt Processing language の略。 (こういうふうに(かっこが(たくさん(出てくる(通好みの(言語))))))。 出身は人工知能研究だが、最近は某有名エディタとかウィンドウマネージャ、 あげくのはてにはシェルにまで棲息し

  • Arc Forum | Arc

    install | tutorial | forum This site is about Arc, a new dialect of Lisp. Arc is designed for exploratory programming: the kind where you decide what to write by writing it. A good medium for exploratory programming is one that makes programs brief and malleable, so that's what we've aimed for. This is a medium for sketching software. Arc is unfinished. It's missing things you'd need to solve some

  • (= arc (+ lisp perl)) : 404 Blog Not Found

    2008年01月31日10:30 カテゴリLightweight Languages (= arc (+ lisp perl)) な、なんですとー。 1つの言語に囲い込まれるリスク @ 2008年01月 @ ratio - rational - irrational @ IDM arcリリースおめでとう! というわけで覗いてみた。 Arc Forum | Arc Arc Forum | Installation http://ycombinator.com/arc/tut.txt ちょwww これ、Lisp Fundamentalist ほど拒絶反応強そう。でも私はちょっと萌えちゃった。 以下、Tutorialからぶっとび箇所だけぴっくあっぷ。 defvar は = まずはこれ。 arc> (= foo 13) 13 arc> foo 13 defun は def Scheme方式の(de

    (= arc (+ lisp perl)) : 404 Blog Not Found
  • neat sxml

    (html (head (title "sxml")) (body (@ (bgcolor "blue") (text "white")) (center (b "Hello.")))) <html> <head><title>sxml</title></head> <body bgcolor="blue" text="white"> <center><b> Hello.</b></center> </body> </html> 左の SXML を変換すると 右の XML になるということです. 要素は list の car, 内容は cdr, 属性は @ に続く cdr, という感じです. 閉じタグが無い分だけ, コード量も削減できますね. SXML から XML を生成するコードも Oleg さんの site にありますけど, 結構いろいろ複 雑なことやっている上に, 単純に変換

  • scheme - traceとslib : 404 Blog Not Found

    2006年04月16日01:22 カテゴリLightweight LanguagesTips scheme - traceとslib ひげぽんに助け舟を出そうとして遭難しかけたので備忘録。 ひげぽん OSとか作っちゃうかMona- - SICPを読もう - (3) 1章 - 手続きによる抽象の構築(1-30ページ) 再帰的なのはすぐ解ける。 ;(略) 反復が分からない。 traceすればいいじゃん、と思って、実例をこさえようとして、手元にscheme implementationがないことに気がつき、さくっとgaucheをインストールして....あれ?traceがない!? そう。実は私がschemeをちゃんと使ってたのはもう20年前。その頃はすでに人様が用意していた環境で作業(というか授業)していたので、traceが標準でないことなどすでにGCの彼方にすっとんでいたのであった。 ざくっと検

    scheme - traceとslib : 404 Blog Not Found