不変量を使った累乗の計算

SICPの問題1.16。これは思いつかなかった。 ; 1.16 (define (fast-expt b n) (expt-iter b n 1)) (define (expt-iter b n a) (cond [(= n 0) a] [(even? n) (expt-iter (* b b) (/ n 2) a)] [else (expt-iter b (- n 1) (* a b))]))

SICP 平方根と立方根

平方根 (define sqrt-iter (lambda (guess x guess-prev) (if (good-enough? guess guess-prev) guess (sqrt-iter (improve guess x) x guess)))) (define improve (lambda (guess x) (average guess (/ x guess)))) (define average (lambda (x y) (/ (+ x …

Scheme修行20章店には何がある? (インタープリタ)

Scheme修行20章のインタープリタをまとめて書いてみました。以下です。 ;; utility (define atom? (lambda (x) (and (not (pair? x)) (not (null? x))))) (define add1 (lambda (x) (+ x 1))) (define sub1 (lambda (x) (- x 1))) (define name-of (lambda (…

Scheme修行 19章宝石泥棒

(define atom? (lambda (x) (and (not (pair? x)) (not (null? x))))) (define fill) (define leave) (define waddle (lambda (l) (cond [(null? l) '()] [(atom? (car l)) (let () (call-with-current-continuation (lambda (rest) (set! fill rest) (leave…

call/cc(call-with-current-continuation)を知った

Scheme修行の14章を今、読んでいます。13章ではじめての構文letccというのが出てきます。letccは処理系で実装されていないことが多いらしく、そのときにはcall/ccというのが使えます。(call-with-current-continuationと省略せずに書くこともできます。) こ…

Scheme手習い 10章 インタープリタ

Scheme手習い10章のインタープリタを書いてみた。 (define value (lambda (e) (meaning e '()))) (define meaning (lambda (e table) ((expression-to-action e) e table))) (define expression-to-action (lambda (e) (cond [(atom? e) (atom-to-action e)]…

JavaScriptでYコンビネータ

function Y(M){ return (function(f){ return M(function(a){ return f(f)(a); }); }) (function(f){ return M(function(a){ return f(f)(a); }); }); } function fib(r){ return function(n){ return (n <= 2)? 1 : r(n-1) + r(n-2); }; } console.log(Y(fi…

Scheme手習いを読むとYコンビネータがわかるよ

「プログラミングGauche」の継続のところが理解できず、「Scheme手習い」という本に手を出した。このシリーズの本は、現在、3冊出版されているようだ。「Scheme手習い」、「Scheme修行」、「The Reasond Schemer」の3冊である。「The Reasond Schemer」は翻…

flattenの定義2

こっちのほうがシンプルでいいような気もする。 (define (flatten lis) (cond [(null? lis) '()] [(not (list? lis)) (list lis)] [else (append (flatten (car lis)) (flatten (cdr lis)))])) 早く継続を勉強して、継続で書いてみたい。

flattenの定義

(define (flatten list) (let loop ((list1 (reverse list)) (list2 '())) (if (null? list1) list2 (if (list? (car list1)) (loop (cdr list1) (append (flatten (car list1)) list2)) (loop (cdr list1) (cons (car list1) list2))))))

プログラミングGaucheの練習問題(any-pred, every-pred)

(define (any-pred . preds) (lambda (x) (fold (lambda (pred res) (or (pred x) res)) #f preds))) (define (every-pred . preds) (lambda (x) (fold (lambda (pred res) (and (pred x) res)) #t preds)))

素数を法とした原始根を求めるプログラム

素数pを法とした剰余環の乗法群(位数p-1)は巡回群になります。その巡回群の生成元のことを「素数pを法とした原始根」といいます。原始根の存在を予想したのはオイラーですが、存在の証明をしたのはガウスです。この証明は難しくて(じっくり考えれば追えるレ…

append2の定義

3通り書いてみた。 (define (append2 lis1 lis2) (if (pair? lis1) (cons (car lis1) (append2 (cdr lis1) lis2)) lis2)) (define (append22 lis1 lis2) (define (append22-sub lisa lisb) (if (null? lisa) lisb (append22-sub (cdr lisa) (cons (car lisa)…

「x^p(pは素数)=eかつx^r=e(1

証明 x!=eと仮定すると G={e, x, ... , x^(q-1)}は位数q(1

この関数が好き! tree-walk

(define (tree-walk walker proc lis) (walker (lambda (elm) (if (list? elm) (tree-walk walker proc elm) (proc elm))) lis)) walkerにfor-eachとかmapを入れて、procにprintとかを入れちゃう。lisには入れ子になったリストを入れちゃおう。

日高普「経済学」メモ7

★資本とは、増殖を求める価値の運動体である →持ち手を変えるという意味ではなく、姿を変えるという意味での運動■商人資本 G-W-G'(G'>G) →偶然の機会にめぐまれなければ、利潤を得ることができない■金貸資本 G・・・G'(G'>G) →貨幣の借り手は商人資本だが、…

飯高茂著「群論,これはおもしろい」問題1.3

【問題】を示せ ここで、以下を使った。 , ならば ならば

フリードリヒ「森の中の猟兵」

日高普「経済学」メモ6

★貨幣の機能 ■価値尺度の機能■流通手段の機能 W0-G-W1 W1-G-W2 W2-G-W3 物々交換なら二人の当事者だけで関係が完結してしまうが、 貨幣があいだにはいると、そうはいかない。・流通手段の量 ある期間内に流通する商品価格総額/貨幣が流通する平均回数 = 貨幣…

日高普「経済学」メモ5

■資本主義の原理の解明 商品→貨幣→資本という論理の展開によって、資本主義の原理が解明される■商品の価値と使用価値 ・商品には価値と使用価値がある ・使用価値は物と人との関係にすぎないが、価値の方は 商品を持って売ろうとしている人と貨幣を持ってそ…

【Perl】ローカルにCPANモジュールをインストールして使う

root権限がないときに、CPANモジュールをどうやって使うか? 1.CPANモジュールをインストールするディレクトリを作成($mkdir perl_lib) 2.CPANサイトからダウンロードしてきたモジュールのディレクトリで 3.$perl Makefile.PL PREFIX=perl_lib 4.$make 5.$mak…

【Haskell】CSVパーサ(WEB+DB PRESS vol.67 2012より)

import Control.Applicative ((<*), (*>)) import Text.Parsec import Text.Parsec.String csv :: Parser [[String]] csv = endBy1 record crlf record :: Parser [String] record = sepBy1 field comma field :: Parser String field = escaped <|> nonEsca…

日高普「経済学」メモ4

■後期資本主義国の発展 ・イギリスに農作物を輸出していたアメリカ、ドイツも商品経済にまきこまれる ・アメリカ、ドイツで鉄道建設が拡大 ・イギリスにはじまり、ヨーロッパ全体をまきこんだ1870年から20年にわたる大不況 →原因1:後期資本主義国の競争の圧…

日高普「経済学」メモ3

経済学の成立■重商主義経済学↓古典派経済学■ペティの経済学(イギリスのウィリアム・ペティ、17世紀後半) ・労働価値説 ・古典派経済学のはじまり■スミスの経済学(イギリスのアダム・スミス、18世紀半ば) ・資本主義を自由主義思想で理論的に体系化(『諸国民…

工藤麻紀子 おおどろぼうのよる

この絵がすきだな。

日高普「経済学」メモ2

■大航海時代の商品経済 アジア→ヨーロッパ(胡椒) ヨーロッパ→アジア(銀) アメリカ→ヨーロッパ(銀) ヨーロッパ→アメリカ(毛織物)■毛織物の生産 問屋制家内工業(putting-out system) (問屋が手工業者に原料を貸し、製品ができあがると、手数料を与えてこれを回…

日高普著「経済学」メモ1

経済とは人間の社会生活の物的側面である。 生産手段と生活資料がある。 再生産を可能にするために、生産手段の生産と生活資料の生産が均衡をたもたなけらばならない。 単純再生産と拡張再生産では、拡張再生産の方が、生産手段の生産にしめる割合が大きくな…

μSchemeRの処理系を写経しました

渡辺昌寛著「つくって学ぶプログラミング言語」を読みました。 http://tatsu-zine.com/books/scheme-in-ruby ↑このサイトから、PDFを無料でダウンロードして、写経しながら読みました。 とても面白かったです。Rubyの勉強にもなりましたし、何よりもプログラ…

Makefileの書き方

このサイトがわかりやすい http://www.ie.u-ryukyu.ac.jp/~e085739/c.makefile.tuts.html 以下、上のサイトのMakefileをコピーしました。サイトがなくなったら嫌なので。 # Makefile_header # プログラム名とオブジェクトファイル名 PROGRAM = main OBJS = m…

【Scheme】区切りでリストをグループ化

区切りでリストをグループ化する関数を書いてみた。結構、悩んだ。 (define (group-list ls sep) (letrec ((iter (lambda (ls0 ls1) (cond ((null? ls0) (list (reverse ls1))) ((eqv? (car ls0) sep) (cons (reverse (cons sep ls1)) (iter (cdr ls0) '()))…