2010-02-10
SICP 問題 2.38
masibonge
...れない op ならいいんじゃないでしょうか.gosh> (fold-left + 1 (list 1 2 3))CALL list 1 2 3RETN list (1 2 3)7gosh> (fold-right + 1 (list 1 2 3))CALL list 1 2 3RETN list (1 2 3)7要は, fold を使うときは並びに注意ってことなのかな.gauche の fold はどっちだろう.gosh> (fold / 1 (list 1 2 3))CALL / 1 1RETN / 1CALL / 2 1RETN / 2CALL / 3 2RETN / 3/23/2gosh> (fold list nil (list 1 2 3))CALL list 1 2 3RETN list (1 2 3)CALL list 1... 続きを読む
2010-02-09
ipod touch jailbreak
y-shift
jobsの忠言に従いjailbreakしてなかったんだけどgauche動かしたくて仕方が無いのでやってみました。結局すぐにもとに戻したんだけどね。環境はipod touch 2G 16GB + iphone os 3.1.3使ったツールはpwnagetoolというやつ。なかなか作業に時間がかかって、イライラするので、もうやらない。正直今のところあまりメリットがないので。それにジョブズが怒るし。あーあ、Androidとかはこういう所フリーだからいいよな。Nexus Oneはドコモから出してもらえるといいんだけど。そろそろP906iもボロくなってきてるし変えたいなぁと。ipod touchゲームとかできていいのだけど少し持ち運ぶには大きすぎるしかさばるのでshuffleが欲しいと最近思うようになった。タイトルとかだけ表示される偽shuffleみたいなかんじのもあれ... 続きを読む
eq? eqv? equal? の使い分け
sirocco
同値かどうかの判定に q? eqv? equal? のうちどれを使えば良いか分からなかったのでGauche ユーザリファレンス 6.1 等価を参考にテストしてみた。(define (list-for-each pred dat ls) (call/cc (lambda (return) (for-each (lambda (x) (if (pred x dat) (return x))) ls) "not found")))(define test '((abc)(1 2 ("def")) "hello" 999 hijk 0.123))(define dat1 (car (cdr test))) ; メモリ上の同じオブジェクト(define dat2 'hijk)(define dat3 999)(d... 続きを読む
2010-02-08
Σとかmaxとか
yatsuta
PRML#11の帰り道、積和やmax-sumをHaskellで実装したら楽しいだろうなと思い、電車の中でいろいろ考えていました。関数型言語ならアルゴリズムの数式をそのまま写経すれば完成じゃね?、と甘く考えていたのですが、Σ取ったりmax取ったりすると、結果の関数は元の関数より1つ引数が少なくなる関数なので、静的型付けのHaskellだとちょっと工夫がいるようです。とりあえずパフォーマンスは度外視して、アイデアだけschemeで実装してみました。処理系はgaucheです。(use srfi-1)(use util.match);;; test math-function(define (domain x) (match x ('x1 '(0 1 2)) ('x2 '(0 1)) ('x3 '(0 1))))(define (f . lst) (mat... 続きを読む
2010-02-06
久しぶりの更新
y-shift
しばらく失礼していました。なかなか身辺が忙しく、模試、勉強、SICP読んだりで更新できないというのがつらい。今週末東京いってそれでようやく一段落といった感じ。二週間後にはテストが控えているという、しかたないね。高速バスの金支払ってしまったんですけど、今日払い戻ししてきました。雪がひどいので新幹線でいくことにします、仕方がない。ここ数日で新幹線のトラブルが続いていて、東海道新幹線、東北新幹線ときているので、次はまさか、と心配しているんですが、大丈夫だよ、たぶん。大学の志望も一応決まってはいるんですが、学校にあまり干渉されたくないので諸文書には地元工学部だけ書いておくつもりです。受かる受からねぇとかどうでもいい。ほっとけ。SICP読んでたらipod touchとか手元で簡単に動かせるgaucheが欲しくなった。
2010-02-03
まじめに文章を書く練習をしてみよう。
trotr
人に自分の思ったことを伝えられない気がする。ヤバい。なので、内容ともかく意味の通る文章を書く練習をする。逆引きrubyの内容をscheme(gauche)で書いて、それを説明するようにしてみる。間違ったところや気づかなかったところがあったりした場合には教えてください。
2010-02-02
Toy VM(8)
cranebird
ビッグピクチャーを書こう。今やっていることを見失わないように。( SECD マシン+コンパイラ) --> (命令列だけベクターにした SECD マシン+コンパイラ)--> (スタックもベクターにした SECD マシン+コンパイラ) --> (gauche VM の一部だけ動くようなマシン+コンパイラはgauche) --> 上と下は、SECD マシンを改造していく道と gauche vm に似せたものを作っていく道だ。どこかで一致すると素敵だ。もし何か作れれば、だけど。リストというデータ構造はとてもすばらしい発明だ 。そしてリストによる SECD マシンはとても簡潔だ。リストは何もかもがポインタだ。1次元の配列と添字は、なんて扱いが面倒なんだろう。そして、SECD マシンをベクトルで書くことも、ひたす... 続きを読む
Lispコンプレックス
skalabe
gauchelispschemeとlisp、scheme系をかじったが、イマイチ身に付いてない…クロージャはマスターしたいなぁ。JVM言語だし。
android.media.AudioRecord
yamanetoshi
ここで見つけたサンプルを元に動作検証用のコードをでっち上げて確認中。なんですが、AudioRecord な thread が buffer overflow 云々なメセジが LogCat に出ててどうにもならない状況。てか、あまり AudioRecord なドキュメント読んでなかったりして、色々確認しつつメモを残す。... 続きを読む
2010-01-30
このpatch.shファイルを使ってみてください。
monsierPIXY
もしかしたら、これで解決?!実は結構自信あります。いや、わからないですが・・・成功することを祈るばかりです・・・やりました!!成功の報告が1件はいりました!!パッチファイル => クリックでダウンロードページへpatch.shを使わないでコマンドからやる方法パッチを使ってもダメだった方ご報告をお願いします。ファイルをダウンロードしたら、以下の作業をしてください。1.ターミナルを立ち上げる。 ターミナルの場所は Application/Utility/Terminal.app or /アプリケーション/ユーティリティ/ターミナル.app です。2.ターミナルに "sh "(sh+半角スペース) と打つ(Returnはまだおさない) この2は省くようにできるんですけど、気がむいたらそうしときます。3.ダウンロードしたファイル(patch... 続きを読む
2010-01-29
ReadingGauche
yamanetoshi
最初らへんをこつこつ掘り中。タグに関する記述は OK かな、って思ってたら_関連_という部分も全部ひらしないといかんのかな、という事に気づく。... 続きを読む
2010-01-28
Gauche本勉強メモ(5日目)
suzuki-shin
6.4 foldの定義foldの定義を書いてみる。自力で考えてみるか。…10分くらいゴニョゴニョやってみたがわからんかった。正解は(define (fold proc init lis) (if (null? lis) init (fold proc (proc (car lis) init) (cdr lis))))まずlisが空リストの時になぜinitをそのまま返せば良いのかわからん。procが(lambda (a b) a)みたいな手続きだったらどうなるの?試してみるか。まず、さっき自前のfold定義しちゃったからgaucheの組み込みのfoldを呼べるように戻すには以下のようにすればいいらしい。gosh> (define fold (with-module gauche fold))foldで、試してみる。gosh> (fold... 続きを読む
bowling scoreler
trotr
...)(write-tree ((match-lambda ["left" `(,h "/\n/" ,b "\n" ,t "")] ["right" `("\\" ,h "\n " ,b "\\\n" ,t)] ["right&left" `("\\" ,h "/\n " ,b "\n" ,t)]) (read-line)))e実数で100桁まで出す方法わからない。(use gauche.collection)(use srfi-42)(define (f len) (+ 1 (sum-ec (: n (map-accum (lambda (i p) (let1 i* (* i p) (values i* i*))) 1 (iota len 1))) (/ 1 n))))(f 100) ; => 42997789077987677528011... 続きを読む
s式でJavaが書ける処理系
mas454
s式でJavaが書ける処理系をつくってみました。http://github.com/mas454/experiment/blob/master/jts.scm>|.scm|(class Test (public) (def (main args) ((public static void) |String[]|) (System.out.println "Hello Java World")))これを例えばTest.jtsという名前で保存して、gosh jts.scm Test.jts Test.javaのようにgaucheで実行すると、Test.javaに>|.java|public class Test{ public static void main(String[] args) { System.out.println("Hello Java ... 続きを読む
R5RSマクロその2
yagiey
R5RSマクロは、式の構造のパターンマッチマッチした時に展開されるテンプレートという形で定義されるってのはこの前やった。しかし、式の構造だけではなく、同じ字句かどうかで判定しなければならないことがある。それがcondで、なぜならelseという字句を見つける必要があるから。特定の字句か否かでパターンマッチングする場合に使うのが、syntax-rulesの第1引数。今まではずっと空リストを与えてきた。さて、condの定義を考える前に、以下のような簡単なマクロfooを考えてみる。gosh> (foo hoge "hello")"hello"gosh> (foo hoge 1)1gosh> (foo hoge 'bar)bar2つの引数をとる。一つ目は必ずhogeという字句、第2引数は任意の式。特に何もせずに第2引数へと展開される。このマクロの定義は次のようになる。... 続きを読む
2010-01-27
Gauche本勉強メモ(4日目)
suzuki-shin
6.3 リストの走査fold手続きと初期値、リストを引数にとり、初期値とリストの最初の値を手続きに渡し、その結果とリストの2番目の値を手続きに渡し、、、という処理を行う手続き。ちょっとわかりにくい。gosh> (fold + 0 '(1 2 3 4 5))15gosh> (fold * 1 '(1 2 3 4 5))120数のリストのうち、最大のものを求めるという手続きmax-numberはどう書くか?書いてみる。max-numberの行う手順をかんがてみる。 1番目と2番目の要素を比べて大きい方を返す。 上の結果と3番目の要素を比べて大きい方を返す。 上の結果と、、、 ということで、2つの数をくらべて大きい方を返す手続きがあればできそう。(define (max-number lis) (fold (lambda (a b) (if (> a b... 続きを読む
タグ (続
yamanetoshi
昨晩、ヒープオブジェクトの項で道に迷いました。... 続きを読む









![À gauche en sortant de l'ascenseur [DVD] [Import] À gauche en sortant de l'ascenseur [DVD] [Import]](http://ecx.images-amazon.com/images/I/51XH9WNGR4L._SL75_.jpg)

Gaucheクックブック
ひげぽん OSとか作っちゃうかMona-
れいめいにっき
どことなく技術屋な日々
yuum3のお仕事日記
計算機と戯れる日々
aikeの日記
Gemmaの日記
forest book
/var/log/messages