概要 LISPでカリー化された関数を定義するマクロを作ってみた.カリー化された関数は,必要な数の引数が渡されればただちに評価されて結果を返すが,引数の数が足りなければ部分適用された関数となる.それもまたカリー化されている. 動機 昨日も一日中椅子に座ってJava書いて……今日も一日中椅子に座ってJava書いて……きっと来週も再来週も一日中椅子に座ってJava書いて……毎日毎日同じ事の繰り返しで,生きてる気がしないんだYO! 簡単なカリー化 定義通りカリー化するだけなら,こんなふうにすればいい. (defun currying (arg-list &rest body) (let* ((args (reverse arg-list)) (last-arg (car args)) (other-args (cdr args))) (reduce #'(lambda (acc elem) `(l
Go 言語による簡単な Lisp 2013-04-04 (鈴) 1. はじめに 2. 字句解析 3. 構文解析 4. 環境と評価器 5. おわりに tiny-lisp.go: 主手続き src/lisp/data.go: cons セルとシンボルその他 src/lisp/env.go: 環境と評価器 src/lisp/globals.go: トップレベルの環境 src/lisp/interp.go: ファイルや文字列を入力とするインタープリタ src/lisp/lex.go: 字句解析および構文解析 8queens.l: 8クイーン問題のプログラム例 (Let Little Lambda Lisp be a Little Lazy §7 から再掲) README.txt lisp-25-04-01.tar.bz2: ソース一式: 11728 バイト 1. はじめに Go 言語による有理数電
What’s New in Emacs 24.3 What's New in Emacs 24.3. I annotate the NEWS file and explain some of the changes made. Emacs version 24.3 is now released to the public. This release, unlike 24.2, is chock full of goodies. I’ve taken the liberty of annotating things that’re relevant to me – and hopefully you, too, dear reader – but I’ve limited my commentary to things I’m familiar with. Always keen to h
地球上でもっともパワフルなプログラミング言語であると言われながら、その謎めいたシンタックスやアカデミックな評判の高さなどから敬遠されることもあったLisp。そんなLispの不遇な時代に終わりを告げるのが本書『Land of Lisp』(Lispの国)です。不思議なマンガやout-of-this-worldなゲームの数々とともに、ベテランLisperの著者が、謎多きCommon Lispを伝授。リストの操作、入出力、再帰などの基礎から始めて、さらにマクロや高階プログラミング、ドメイン特化言語などへと話題をすすめながら、Lispのより高度なテクニックについて解説しています。 翻訳者によるサポートページ(http://practical-scheme.net/wiliki/wiliki.cgi/Shiro:LandOfLisp) 謝辞 はじめに Lispがクールで、そして奇妙なわけ Lispがそ
最初の文章のまま載せていますので、コメント欄のshiroさんの添削と合わせてどうぞ: 一概には言えないが、2点だけ。 僕は、SICPはプログラミング言語の本じゃなくて、あれはプログラミングの本なんだと思ってる。本の中でSchemeを使っているのは、アトミックなプログラミング言語だからなんだ。ラムダ計算、末尾再帰、継続を使った抽象制御、抽象構文(マクロ)、可変状態など。軽量で、かつ十分だ。 SICPでは、プログラミングをする上での課題を扱っている。モジュラリティ、抽象、状態、データ構造、並列処理など。generic dispatchやオブジェクト、並列処理、遅延リスト、(可変な)データ構造、「タギング」なんかの、明確な課題設定に対する実装例と解説が書いてある。 Clojureはアトミックなプログラミング言語じゃない。僕はもう、アトミックにプログラミングするのは古くて遅くて飽きた。Clojur
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)ベアトリーチ
(このエントリは、Lisp Advent Calendar 2012 の22日目である) ELIS復活祭のとき、ELISのTCP/IPプロトコルスタックを書いたという方とお話する機会があった。ELISのプロトコルスタックはもちろんLispで書かれていた。その方がおっしゃるには、「C言語はよい。BSDからソースコードを持ってくればいいのだから。しかし、Lispで書かれたプロトコルスタックなどなかった。自分で書くしかなかった」ということだった。それにしても、LispでOSを書くというのは、いったいどんな感じなのだろう? OS記述言語としてのLisp UnixがCで書かれて以来、OSは、伝統的にCとその派生言語で書かれることになった。BSDやLinuxを含むUnix-likeなシステムはもちろんCで書かれている。Windows NTはC++を使っている。BeOSもC++で書いたし、MacOS X
スロウでローファイ Xをやめてから急に写真を撮る速度が落ちたようで、そういえば最近このblogにもフィルム写真の話題を書いていない。 写真に飽きたわけではなくペースが落ちただけなのだが、よくよく考えてみれば写真なんて分野はそうそう目新しいことが起きるわけでもなくイノベーショ…
Scheme(これは Lisp Advent Calendar 2012 の 16 日目の記事です)Scheme で Common Lisp の setf 風のものを実現するものに SRFI 17: Generalized set! があるが、この参照実装にはいくつか問題がある。ひとつにはゲッタとセッタの組を大域変数で管理しているのでゲッタとセッタの対応関係にモジュール性がないこと、もうひとつは手続き同士の同値性という RnRS の未規定部分に片足を突っ込んでいることである。R5RS 6.1 Equivalence predicates の定義によれば、同一の場所に格納されている手続きは同値(eqv?)である。すなわち、 (eqv? car car) は常に真である。したがって、 car に何らかのセッタを対応づければ、 car の値からそのセッタを見つけることができる。だがもう一方で e
はじめに 『プログラミングClojure』が発売されてから、もうすぐ3年が経ちます。原著である"Programming Clojure"の第一版はClojure 1.0の時代に書かれたもので、日本語版も当時開発中だった1.1における変更点を訳注で補足していますが、基本的に1.0ベースです。 Clojureのコードが登場する日本語の書籍は他にも『7つの言語 7つの世界』や『実践プログラミングDSL ドメイン特化言語の設計と実装のノウハウ』などがあります。しかし、タイトルから分かるようにClojureはこれらの本では数あるトピックの一つであり、読めばClojureの要素に一通り慣れ親しむことができるというわけではありません。Clojureも「比較的古びていない書籍は皆英語で書かれている」というよくあるパターンにハマっています。 Pythonが「Pythonらしさ」を保ちながらも、より「Pyth
これはLisp Advent Calendarの10日目です。 先日、HappyElementsさんで行われたLiveCoding #11にライブコーダとして参加させていただきました。そのときの話をしようと思います。 LiveCodingとは 一人の"LiveCoder"が、20分の制限時間で何かソフトウェアを作り、デモをします。 LiveCoderがどのようにコーディングしているかの全てがプロジェクターで大画面に映し出され、 さらに解説役が常にLiveCoderの挙動を説明します。 A 「コンパイル中です・・・、お、おおお、なんと、Syntax error!」 B 「これは恥ずかしい…!」 LiveCoder 「(/// 」 LiveCoderが何を作るかについては、自分で決めた上でそれをLiveCoding前に告知します。 ただし、観客の要望で仕様が強制的に変更になることがあります。
(このエントリは Lisp Advent Calendar 2012 4日目の記事です。) Advent Calendarの参加登録のときには「Common Lispで、何かを。」とか言っておきながら、全然違うものを書きます。 神(SHEN)という名のプログラミング言語が存在します。QiというLisp方言の進化系らしいです。ロゴが非常にイカしています。名前も非常にイカしています。パターンマッチだとか 統合されたPrologだとか静的型だとか、いろいろ特徴があるようなのですが ロゴと名前が非常にイカしています。 (注意:先に宣言しておきますが、書いてる本人は Shenをほとんど使ったことがなく、Shenのステキ機能が全然引き出せていません。このエントリは、タイトルを見た時点でほとんど終わっています) SBCLとかClojureとかJavaScript上で動作します。僕はWindows SBC
(このエントリはLisp Advent Calendar 2012 1日目の記事です。) はじめに 2年ほど前に、「◯◯言語基礎文法最速マスター」という、それぞれの言語の基本的な文法を説明したブログ記事を書くのが大流行した時期がありました。その流行り具合は、まとめ記事にまとめられた記事の数を見てもうかがい知ることができると思います(たとえば、こことか→プログラミング基礎文法最速マスターまとめ - ネットサービス研究室)。 それで、これだけたくさんの言語がカバーされてれば当然Clojureもあるだろうと思ってググってみましたが、意外にも2年経った今も「Clojure基礎文法最速マスター」はないみたいです。で、僕は入門記事みたいなのは書くのが苦手なのでやらないんですが、「Clojureの基礎文法とは何ぞや」ということを改めて考えてみました。 で、「基礎」をfoundationと考えれば、コンパ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く