This page's content was permanently moved to: https://www.ic.unicamp.br/~meidanis/courses/problemas-lisp/L-99_Ninety-Nine_Lisp_Problems.html
昨日の続き。 (rss->xsml "http://oss.timedia.co.jp/kahua-web/rss.xml") などとすると、 (*TOP* (*PI* xml version="1.0" encoding="euc-jp" ) (rss (@ (version 2.0)) (channel (title "Kahua-web") (link "http://oss.timedia.co.jp/show") (description "Kahua-web TEST Site") (lastBuildDate "Tue, 24 Oct 2006 08:09:40 +0900") (item (title "今日の一行") (link "http://oss.timedia.co.jp/show/column/%ba%a3%c6%fc%a4%ce%b0%ec%b9%d4") (
他サイトのRSSを読み込んで加工し、自分のサイトに表示してみたい。 (use rfc.uri) (use rfc.http) (use sxml.ssax) (define (rss->sxml uri) (receive (schema user-info hostname port path query fragment) (uri-parse uri) (receive (status header body) (http-get hostname path) (call-with-input-string body (lambda (in) (let ((sxml-data (ssax:xml->sxml in '()))) (values status header sxml-data))))))) とりあえずこれでSXMLは得られたが、 さて必要な要素だけを取り出して加工するに
使いたい人のための継続入門継続渡し形式call/ccは普通の関数call-with系関数call-with-procedurecall-with-continuation-procedurecall-with-current-continuation評価順序と継続call/ccパズルお手元マルチスレッド部分継続reset/pcとcall/pc環境破壊と部分継続部分継続の使用法PRINT-AND-NEXT-REPL議論質問お手元マルチスレッドのサンプルプログラムについて 使いたい人のための継続入門 とりあえず殴り書き。 くどかったり冗長な文章になってたり、重複してたり、間違ってたり、 おおいなる勘違いをしてたり、恥をカいてたりするかもしれないけどご愛敬。 藁をもつかみたい気持ちで継続を使えるようになりたい人は読んでみてください。 ただし所詮は藁です。(w 継続渡し形式 例によって階乗fact
リンクをたどっていくつか巡回するだけの簡単なクローラを作ってみたら、戸惑うところが多かったので、まずはそのメモ。 戸惑ったところ http-get オプションで「:no-redirect #t」を指定しないと、自動でリダイレクトする → リダイレクトされると、持ってきたページのURIが想定していたURIと違う場合がある。→ 「http://」から始まらないパス(相対URI)を長いURI(絶対URI)に戻せない。 オプション「:sink out」を指定すると、HTTPの応答のメッセージボディは出力ポートoutに書き出されていく。「:sink out」を指定している状態でリダイレクトが発生すると、リダイレクト前にoutに書き出されたものとリダイレクト後の結果の両方が書き込まれた状態になる。flusherオプションで適切に処理させる? 文字コード関連 http-getは文字コードの指定オプション
略歴 大学時代にC言語をはじめるが、よくわからず挫折。 その後、Rubyを知り簡単なスクリプトを書くようになる。 関数型言語を勉強したくなりHaskellをやったが、よくわからず。 ;Haskellも勉強し直し中 その後、たまたま本屋でみょーに口と目が大きい魚の表紙のオライリー本を見かける。その本はプログラミングGaucheというらしい。 自宅に帰って、wikiで調べると何か凄いらしいとわかり、後日購入。 その後は、ほとんどGaucheでコードを書くようになる。 コンピュータ関係は本当に勉強することが一杯あるなー。 これだけでも一生やっていけそうだ。 perl perl入門してみる。 cpanが楽しみ。 C言語 プログラミング言語Cとプログラミング作法を読み終えた。 Cは良い言語。 そういえば、どっかで読んだけどCのインデントが8なのは、ネストを深くしてはいけないという教訓から来ていると書
内容に直接関係しないのですが、「スタックのコールバック」。@aharisuさんが言っていたのはたぶん「コールスタックの破棄」的なことだったかと。コールスタックごと吹き飛ばす的な。違ったかな。 継続 - Wikipedia 「ある時点での状態」を変数に束縛して、後からそこへ戻るといったことも可能になる。Schemeの継続は関数の形をとっており、これは「その関数を呼ぶことにより、そこに渡された引数をcall/ccで囲まれている式全体の値として継続に“注入”できる」と定義されている。継続 プログラムの実行順序を制御する概念継続 既に終了したスタックフレームを黄泉の国か ら引きずり出してスタックにぶちこめるわけである。普通の人間が「おっ、ここはCall/CCを使えば カッコ良く実装できるね!」などと思いついたりすることはまずありえないScheme/継続 - Wikibooks 継続を用いれば大域脱
sxpathを使ってみようとしたら、とてもわかりにくかったのでメモ。 Gaucheのマニュアルを見ると SXPathは、XML Information set (Infoset)のインスタンスのS式フォームである SXMLのためのクエリ言語です。 とあるけど、ここではクエリ言語に限らずに、sxml構造から特定のノードを取り出すための機能全般を表すことにする。 補足: HTMLをSXMLに変換する。 sxmlツリーを探索する コンバータ sxpath関数に与えるクエリ 条件で子ノードを限定する コンバータの埋め込み 関連:2010-04-12「sxpathのクエリに正規表現を書けるようにする」 補足: HTMLをSXMLに変換する。 とりあえず何か具体的なXMLデータがあった方がよいので、HTMLファイルをSXMLに変換することにした。でもたいていのHTMLファイルはXMLの形式になっていな
参考 GaUnit run-test.el GaUnit::wiki run-test.el::wiki .emacs C-c C-t が scheme-trace-procedure コマンドにキーバインドされていて使えないので、scheme-mode-hookで変更。 (add-hook 'scheme-mode-hook '(lambda () (define-key scheme-mode-map "\C-c\C-t" 'run-test))) (setq load-path (cons "/usr/share/emacs/site-lisp/run-test/" load-path)) (load "run-test-setting") run-test.scm を設置 testしたいファイルのあるディレクトリに test という新規ディレクトリを作成し、中にrun-test.s
shiroさんに教わったのでメモっておきます ;;; from shiro (defun gauche-info-index (topic) (interactive (list (read-string (concat "Gauche help topic : ") (current-word)))) (switch-to-buffer-other-window (get-buffer-create "*info*")) (info "/usr/share/info/gauche-refe.info.gz") ;;(info "/usr/local/share/info/gauche-refe.info.gz") ;;うちは/usr/local/ (Info-index topic)) ;;(define-key global-map "\C-xH" 'gauche-info-index
Schemeのシンボルを補完入力してくれる、scheme-complete.elを使い始めました。 ソースコードの記述の違いを見て処理系を自動的に判断してくれるみたいです。 scheme-complete.el の用意してくれる補完バッファが、なぜかうまく動作しなかったので、auto-complete.el で使えるようにしました。 scheme-complete.elをインストールsynthcode - scheme-completeから最新のscheme-complete.elをダウンロードします。 解凍して、ロードパスの通ったところに置きます。 gunzip -c scheme-complete-0.8.9.el.gz > scheme-complete.el mv scheme-complete.el /usr/share/emacs/site-lisp/ 設定(scheme-co
「ニコニコ動画にVOCALOIDオリジナル曲の動画が投稿されたのをお知らせする」という、Twitterのbotを去年の12月ごろに作ったので、それをGaucheで書き直してみました。 「こんなbot公開していいのか」と怒られそうなほど欠陥だらけですが・・・ 実は、自分でニコニコ動画のRSSを読んでいるわけではなく、VOCALOIDオリジナル曲の新着動画を表示してくれるサイトの「ぼかにゅー」というところのAtomフィードを読んでいます。 (ぼかにゅーの開発者の方には許可取ってるつもりですが・・・) 一応、ぼかにゅーのURLを書いておきます。 ぼかにゅー: http://vocanew.naniyueni.org/ ぼかにゅー開発ブログ: http://d.hatena.ne.jp/vocanew/ 一応、Twitter ID「@vnewsong」で動いています。 まず、書き直す前の、Ruby
When having the choice to use a Hook or Advice to manipulate a certain package, what should you do? Hooks are always better because they break less. If the author provided a hook, then the author expects user code to run. Advice, however, can have unexpected side effects. Advice should only be used when no hook is provided. The problem is that advice subtly changes the semantics of the commands it
絶対にすでに誰かやっていると思いますが、Gaucheを使ってTwitterに投稿するプログラムを書いてみました。 PerlやRuby、Pythonのような、スクリプト的な用途はSchemeが便利です。 ; Twitterに投稿する (use rfc.http) (use rfc.base64) (use rfc.uri) (define (twitter-update status username password) (http-post "twitter.com" (string-append "/statuses/update.json?status=" (uri-encode-string status)) "" :Authorization (string-append "Basic " (base64-encode-string (string-append username
基礎文法最速マスターブームにのっかってみる。Ruby基礎文法最速マスターをだいたいEmacs Lisp(elisp)に置き換えてみる。 Emacs LispはEmacsで使われているLisp方言のひとつだ。他の言語をある程度知っている人はこれを読めばEmacs Lispの基礎をマスターしてEmacs Lispを書くことができるようになるかもしれない。無保証ではあるが。 ある程度はCommon Lispにも応用できると思うよ。 更新情報 [2010/02/03] 注釈の誤りを修正。 let*について加筆。 基礎 対話的にEmacs Lisp式を評価する Emacsを起動したときに生成されている、スクラッチバッファ(*scratch*)を使うと、Emacs Lispの式を簡単に評価することができる。M-Tabで補完できるぞ。 式を書いたらC-jを押すと、式の値が出てくるぞ。 (+ 1 3) 4
Are you an Emacs user but don't know Lisp? Welcome to my first Emacs Lisp primer! This should hopefully help get you over the hurdle so you can have more control over your Emacs sessions. There are lots of ways to do things in Lisp, and some are "Lispier" than others. I'm going to focus on how to do things you probably already know how to do from C++ or Java. I'm mostly focusing on the language it
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く