まずはモジュールがどういうものか、いくつか確認してみます。 Gauche ユーザリファレンス: 4.11 モジュール モジュールは、シンボルを束縛へとマップするオブジェクト モジュールは継承することもできます。 既存のモジュールを継承したモジュールに新しい束縛を足してexportすることにより、 既存のモジュールを拡張することができます。新しいモジュールの内部からは、 継承元のモジュールの束縛が(exportされていないものも含め)全て見えます。 (新しく作られるモジュールはデフォルトでgaucheモジュールを継承しています。 新しいモジュールからgaucheの組込み手続き等が使えるのはそのためです)。 モジュールは実行時データ構造です。実行時に任意の名前のモジュールを 手続き的に作成することができます。 Gauche:evalと環境 define-moduleはモジュールに名前を付けるが
CoffeeScript's port of the Scheme's Metacircular Evaluator – chapter 4.1 of the SICP. Version: 0.1. History: Ctrl + ↑ / Ctrl + ↓. Eval: Ctrl + Enter or the button "eval" below. Source: scheme-on-coffee on Github. ECMAScript info: http://dmitrysoshnikov.com Expression input: (+ 1 2 3)clear expression input on eval Examples (click to eval): 1. Sum: (+ 1 2 3) 2. Define a variable in the Global enviro
近頃、Scheme(Gauche) で DSL を書くお仕事をしています。domain specific language のあれです。先日までは、Gauche で JSON を使って PostgreSQL とやり取りする CGI な API を書くお仕事をしていました。(主に設計面と進捗的なとこでボツりましたけどね。。面目なさ過ぎて涙目 orz) 現在お世話になっている会社にて、「言語は Scheme でも Common Lisp でも、他のなんでも好きなものを使って良いよ。」という素敵なお話で、Scheme を選びました。Lisp が好きな身としてはすごく幸せな環境です。(windows 環境であれば C# を選らんだと思いますが。) というのは、Scheme や Lisp という言語がパワフルかどうかとは関係ないところで困るんです。ユーザーが少な過ぎるんだと思います(他国では違うのか
http://www.racket-lang.org/ Racket/PLTは数多くあるschemeの実装のなかで、一番元気があって環境が整っているものだ。 このスキームはpltとかmzschemeとかDrSchemeとか色々な名前で呼ばれていて(ランタイムと開発環境の区別とかあるんだろうが、とにかく紛らわしい)さらなる混乱防ぐ(させる?)ために「Racket」という名前に統一したようだ。 大学のコンピューターサイエンスのクラスで教材として育ったらしくて、ドキュメントとかIDEがかなりしっかりしている。ただ親切で使い易いというだけではなくて、機能も充実しているようだ。Paul Graham氏のarcはこのschemeの上にマクロとして実装されている。 各プラットフォームのインストーラも完備されている。 http://www.racket-lang.org/download/ schemeを
► 2022 (2) ► 10月 (1) ► 2月 (1) ► 2021 (51) ► 11月 (2) ► 10月 (2) ► 9月 (4) ► 8月 (4) ► 7月 (4) ► 6月 (4) ► 5月 (3) ► 4月 (10) ► 3月 (7) ► 2月 (4) ► 1月 (7) ► 2020 (155) ► 12月 (7) ► 11月 (10) ► 10月 (8) ► 9月 (8) ► 8月 (11) ► 7月 (21) ► 6月 (19) ► 5月 (14) ► 4月 (20) ► 3月 (13) ► 2月 (10) ► 1月 (14) ► 2019 (293) ► 12月 (11) ► 11月 (12) ► 10月 (24) ► 9月 (29) ► 8月 (27) ► 7月 (36) ► 6月 (40) ► 5月 (24) ► 4月 (35) ► 3月 (42) ► 2月 (6
■ [biwascheme] BiwaScheme 0.5.5.1をリリースしました http://www.biwascheme.org/ 前リリースからの変更点: R6RS 構造体(Records)を実装しました。苦労話はそのうち…(functionが4重にネストしたコードはこちら: record.js) 公式サイトのデモが、BiwaSchemeコントリビュータのjcubicさんのJQuery Terminal Emulatorを使うようになりました。 iPhone/iPad用画面ができました→http://www.biwascheme.org/i.html 公式サイトからzickさんのホッケーゲームへのリンクを張りました。 このリリースは「大人になったからそろそろプレゼントする側にならないとな」という気持ちの提供でお送りしました。 今後やりたいこと Node.JS対応 JQueryへの
► 2022 (2) ► 10月 (1) ► 2月 (1) ► 2021 (51) ► 11月 (2) ► 10月 (2) ► 9月 (4) ► 8月 (4) ► 7月 (4) ► 6月 (4) ► 5月 (3) ► 4月 (10) ► 3月 (7) ► 2月 (4) ► 1月 (7) ► 2020 (155) ► 12月 (7) ► 11月 (10) ► 10月 (8) ► 9月 (8) ► 8月 (11) ► 7月 (21) ► 6月 (19) ► 5月 (14) ► 4月 (20) ► 3月 (13) ► 2月 (10) ► 1月 (14) ► 2019 (293) ► 12月 (11) ► 11月 (12) ► 10月 (24) ► 9月 (29) ► 8月 (27) ► 7月 (36) ► 6月 (40) ► 5月 (24) ► 4月 (35) ► 3月 (42) ► 2月 (6
最近、私のまわりでは様々な角度から多面的に話題な"Lisp"ですが、20年以上の歴史を持つLisp解説書の日本語翻訳版が2010年10月22日に新発売されます。 「Scheme手習い」です。 最近、私はインターネットのカタチに関して語るという本をオーム社で執筆しているのですが、そこでお世話になっている編集の方の熱い想いが、この訳本を実現しました。 この書籍への熱い想いがネット越しに伝わって来たので、遅れ遅れになっている私の原稿に関するミーティングを含めて、お話を聞きに行ってきました。 第4版の版権を得て翻訳 原著のおおもとである「The Little LISPer」は1974年にまでさかのぼります。 原著は何度か版が変わっていますが、1990年に邦題「Shecme手習い - 直感で学ぶLisp」としてマグロウヒル出版から刊行されたのは、1987年の版でした。 しかし、マグロウヒル出版の解散
個人用のスクリプトを書く際には、便利なライブラリが全てuseされていると嬉しい。 (gauche.experimental.*は、これをuseするのが億劫になり使わないことが度々) 今までは逐一利用したいライブラリをuseしてきたけれど…面倒くさい。 特に他人と共有しようとするスクリプトでなければ、もっとわがままに振る舞っても良いのではないかと思った。 幸いgoshは-lオプションで事前に読み込むファイルを設定できる。 個人的な処理を行う際に起動するgoshコマンドをgosh-exとして作ってみた。 行う手順は以下のとおり ~/.gosh-ex作成 gosh-ex コマンドを作成 .gosh-ex useしておきたいライブラリなどをuseするなどする。 (use gauche.experimental.lamb) (use gauche.experimental.ref) (use gau
call/cc 入門 (Coroutine with call/cc) - MAYAHの前半を読んでみた。 演習問題みたいなのがあったので、やってみた。 gosh> (define cont #f) cont gosh> (and (call/cc (lambda (c) (begin (set! cont c) 10))) (begin (display 'a) 10)) a10 gosh> (cont 10) a10 (cont 10)の実行で、何が起きてんのかな? 「call/cc の値を x にしてλ抽象」らしいので、contは (lambda (x) (and x (begin (display 'a) 10))) になるかなぁ、と。んで、 実は、continuation は「continuation が呼ばれると、continuation が作られた call/cc の外に、引
プログラマがコード中に書いたマクロ マクロ展開によって出現するマクロ すべてが展開された後に評価されるもんだという先入観があった。 だけど、id:yagiey:20100223:1266942998あたりからその先入観が疑わしく感じ始めた。 例えば次のような場合 gosh> (define-macro (_if test e1 . e2) `(if ,test ,e1 . ,e2)) #<undef> gosh> (define-macro (_or . args) (cond ((null? args) #f) ((null? (cdr args)) (car args)) (else (let ((tmp (gensym))) `(let ((,tmp ,(car args))) (_if ,tmp ,tmp (_or . ,(cdr args)))))))) #<undef> gos
継続によるプログラムの実行の中断・再開と、LOL の pandoric macro (クロージャに捕捉されている自由変数に、クロージャの外側からアクセスするためのマクロ) を組み合わせて簡単なブレークポイントっぽいものを作ってみました。 使い方 以下のようにして使います。 (use breakpoint) (define (fact n a) (bp :fact n a) (if (= n 0) a (fact (- n 1) (* n a)))) (bp ...) とある箇所がブレークポイントです。bp の第1引数はブレークポイントの名前、第2引数以降にはそのブレークポイントで止まったときに、その時点での値をチェックしたい変数の名前を指定します。 上のプログラムを実行したときの例を以下に示します。 gosh> (reset) ;; プログラムを実行する前に初期化をしておく #<undef
Often when I learn a new programming language that’s different enough to what I already know, the first thing I implement is an interpreter for some subset of the Scheme programming language. I’ve done Scheme implementations in OCaml, Mercury/Prolog, Forth and Unlambda, among others. Recently I had to learn JavaScript for a small, fun project about which I’ll blog some other time, but I figured th
Schemeをいじりはじめて1年くらいかな(つんどく期間を除いて)。 まだまだ分からないことだらけ。 その一つが、シンボル。 http://karetta.jp/book-node/gauche-hacks/023107で紹介されているFizzBuzzのソースコードだけど、ぼけーっと読んでて気づいたことがある。 このWebページのソースコードは、本のそれと少し異なっている。 ;; Webのソースコード (map (lambda (x) (cond ((= (modulo x 15) 0) "FizzBuzz") ((= (modulo x 5) 0) "Buzz") ((= (modulo x 3) 0) "Fizz") (else x))) (iota 100 1)) ;; 本のソースコード (map (lambda (x) (cond [(= (modulo x 15) 0) 'Fiz
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く