(define -ayalog '())

括弧に魅せられて道を外した名前のないプログラマ

Scheme

SICPを読む_(13)2章_データによる抽象の構築(p49-59)

明日と言って、「明日」書いた覚えがない程度にダメ人間。 さて、今日は暇なのでにゅるっと頑張る。 2.1.2 抽象の壁(p49-50) 抽象の壁、ということでシステムの異なるレベルを隔離するものとして表現されている。 有理数の演算について考えた場合、add-rat,s…

Gaucheのモジュールを書いてみた

SICPを解いているとどうしてもaverageとかsquareとかfibとか、突拍子もなく出てきて「あー、書かないとダメかー」っていう思いを何度もすると思う。いや、もしかしたら早い段階で気付いた人は、どっかのファイルにまとめて書きだして (add-load-path "hogeho…

SICPを読む_(12)2章_データによる抽象の構築(p45-49)

間が空きました。なんかVPSといらぬ戰いをしていたので、ちょっと本流に戻ってきます。*1 (GaucheのKahuaとか触りたい…うずうず。いつかGaucheのソースコード読めるようになるんだ…。)というわけで2章、入っていきます。年内に終わらせたいと言いつつ本当に…

Gaucheを常に最新に保つ。

@ayato_p GaucheはHEADを使うものだあああああああああああああ2013-05-18 10:41:08 via twicca to @ayato_pということで、GaucheはGitHubのHEADを使うのがなうでヤングらしいので、さくっとやってみる。 と、思ってVPSでHEAD入れようとして、コケまくってた…

Gauche使ってTweetできた

Gauche使ってTweetできたらちょっとおもしろいかなって思って色々探してたら、モジュールがあったので紹介記事だけ書いてみる。 Gauche-net-twitter shiroさんが作ったTwitter用のモジュールがあるんですが、3年ほど前から更新されていないようです。 shirok…

Gaucheのユーザーリファレンスを呼び出す

2日連続更新なんて珍しい。ということで、あやぴーです。最近Gaucheで色々書くことがあったりなかったりしているのですが、 もう少しユーザーリファレンスをスマートにかつ!クイックに!参照したいと思うようになってきた。ちょっとGaucheユーザーらしくな…

GaucheでWEB APIを叩きたかった

こんばんわ!こんばんわ! だいたい、あやぴーです。最近色々と作ってみたいもの、試してみたいことが多くて時間が足りていない感凄い。 で、ちょっと試したいことあったので、まずはWEB APIをGaucheで叩いてみたいと思った!今回とりあえずWEB APIを叩くの…

SICPを読む_(11)1章_手続きによる抽象の構築(p37-44)

ということで1ヶ月と少しぶりです。SICPの続きです。前回までで何処までやったかすっかり忘れていますが、37ページ付近まで書いたみたいなので頑張って1章終了まで持っていきます。 1.3.3一般的方法としての手続き(p37~40) この節で、関数の零点と不動点を探…

SICPを読む_(10)1章_手続きによる抽象の構築(p31-37)

間がめちゃくちゃ開いた気がします…。気がついたら脱線しまくりの、私生活ドタバタで全然進んでませんでした。 ということで気を取り直して、またサクサク進みますよ!>< 1.3高階手続きによる抽象(p31) プログラムで3乗することはできるが、言語には3乗の…

ドラクエ7のバロックタワーのパズル問題にSchemeで挑んだ結果…

はい。昨晩Twitterでこんなのが流れてきました。 (※ネタバレあり) / ドラクエVIIのバロックタワーのパズルを解く URL2013-02-21 00:26:53 via Tweet Button僕も最近毎晩のようにドラクエ7やってます。 今、ちょうど最強の呪文を覚えたりしたとこです。ちな…

SICPを読む_(9)1章_手続きによる抽象の構築(p26-31)

おはようございます!!ドラクエ7やってますか?? やっとルーメンクリアしたあたりで、主人公が勇者極めちゃってたり、マリベルが天地雷鳴師極めちゃったんで、ローズバトラー極めに行こうかと計画してたりします。*12月に入ってSICP読むも、なかなかこっちに書…

named-letの練習

なんかnamed-letが分かりにくかったので書いて理解しようとした。 文字列の空白を除いて文字数をカウントする手続き (define (str-count str) (let loop ((ls (string->list str)) (count 0)) (let ((inc (lambda (x) (+ x 1)))) (cond ((null? ls) count) (…

KPF#x08でLTしてきたよ #kpf

こんにちは!こんにちは!ということでkpfの第8回目に参加して、LTしてきたのでブログに書いてみる。告知ページはこちらでした。 KPF#x08 当日のまとめはこっち。 KPF #X08 KPFとは ということで、まず「KPFとは?」というところをさくっと説明しておきます…

SICPを読む_(8)1章_手続きによる抽象の構築(p23-26)

今日はできればp30まで書きたい。ということでノロノロ書いていきます。 1.2.3増加の程度(p23-24) 計算の資源を消費する速度について考える。 プロセスの入力が大きくなるにつれて必要とする資源を、粗く見積る「増加の程度」を考える。 最近の若者はアルゴ…

SICPを読む_(7)1章_手続きによる抽象の構築(p20-23)

今回は木構造再帰の部分らへんを書いてます。 1.2.2木構造再帰(p20-) 計算でよくあるパターン「木構造再帰」 ということでフィボナッチ数列。 (define (fib n) (cond ((zero? n) 0) ((= n 1) 1) (else (+ (fib (- n 1)) (fib (- n 2)))))) 黄金比すげぇ(脱線…

SICPを読む_(6)1章_手続きによる抽象の構築(p21)

なんだかんだで少しずつ進んでるので、自分を褒めてあげたい今日このごろ。 ということで、今日も今日とて少しずつSICP読み進めますよ!!>< 問題1.9(p20) (define (plus a b) (if (= a 0) b (inc (plus (dec a) b)))) (define (plus a b) (if (= a 0) b (…

SICPを読む_(5)1章_手続きによる抽象の構築(p14-20)

1.1.8ブラックボックス抽象としての手続き(p14-17) 再帰的であることに注意 それ自身を使って手続きが定義出来るという考えは紛らわしい 再帰については後で触れる sqrtのプログラムは手続きの"束"であるといえる 問題の部分問題への分割を反映している 手続…

SICPを読む_(4)1章_手続きによる抽象の構築(p14)

問題1.6(p14) とりあえずnew-ifを書いてみる。 (define (square x) (* x x)) (define (abs x) (if (> x 0) x (- x))) (define (new-if predicate then-clause else-clause) (cond (predicate then-clause) (else else-clause))) (define (sqrt-iter guess x)…

srfi-1のfilterってこんな感じ??

これの追記を書いたときに、srfi-1のfilterに興味持ったのでちょっと分かったことだけメモっとく。一般形としてはこんな感じかな?? (filter predicate list) なんか無名関数とか渡せるらしい (filter (lambda (x) (= (modulo x 2) 0)) (iota 100)) 自分で作…

エラトステネスの篩(Schemeで書きたかった)

なんとなく書いてみた。 (define (range m n) (cond ((> m n) ()) (else (cons m (range (+ m 1) n))))) (define (filter x l) (cond ((null? l) ()) ((= (modulo (car l) x) 0) (filter x (cdr l))) (else (cons (car l) (filter x (cdr l)))))) (define (s…

SICPを読む_(3)1章_手続きによる抽象の構築(p1-13)

実際に読んだとこを振り返りながらまとめてみる Lispによるプログラミング(p1-2) John McCarthyによって発見された言語(再帰方程式という計算モデルが元) 現代においても使われているFortranの次に古い言語 プログラムの構成やデータの構造を学び、言語の基…

マッピング?

なんとなくソースコード書いてました。 で、mapって出てきたのでちょっと困惑してる。 元々Java触ってるのでmapってコレクションなイメージ。mapとは リストの各要素に同じ操作をする関数です。 操作を施したリストを返す map と、副作用を目的とする for-ea…

fact関数を暇だったので書いてみた。(本当は暇じゃない)

全然暇じゃないです。正直気晴らしに少し考え事しながら書いてました。以下は僕が書いたコード (define (sub1 x) (- x 1)) (define (fact x) (cond ((zero? x) 1) (else (* x (sub1 x))))) こっちはもうひとつのScheme入門から (define (fact n) (if (= n 1)…

数遊びをしよう(ちょっとaddの理解をしたい)

これまたScheme手習いより。 非負整数の足し算をする関数を作ってみましょうってだけの話です。 それでもって途中add1って出てくるけど、これは受け取った引数に1を足して返すだけ。 sub1は逆で1引いて返してくれます。 これはCommonLispだと標準的な関数な…

コードの最適化?

ということでちょっとコード書きますよっと。 Scheme手習いから。 (define (insertR new old lat) (cond ((null? lat) '()) (else (cond ((eq? old (car lat)) (cons old (cons new (cdr lat)))) (else (cons old (insertR new old (cdr lat)))))) (define (…

rember--Scheme手習い

ということで再帰ってすげぇなぁと思いながら難しいなぁと実感。 Javaに関する技術書には、わざわざ再帰について書いてないので結構再帰という概念を使ったことのないJavaプログラマっているんじゃないのかなぁと思ってます。まぁ僕です。さて、今日のプログ…

cond…

ちょっと朝から勉強してたので、今の理解している範囲を書きだしておく。Scheme手習いではifなんて書かれることがない。 ほとんどcondで書かれている。あまり気にすることもないのかなぁと思っていたが、Scheme手習いの説明と実際のcondの役目というのは若干…

member?--Scheme手習いより

順調に読み進めて、再帰という考え方もなんとなく分かり始めた今日この頃。ということでScheme手習いP23よりmember?を書いてみる。 (もちろん、見ないでP22までの情報です。) (define member? (lambda (a lat) (cond ( (null? lat) #t) (or (eq? a (car lat)…

EmacsでGauche使ってるんだけど、Scheme手習い読んでて今更気づいたこと。

僕が初めてSchemeに出会ってから早いもので1ヶ月が経ちました。 まだ色々と未熟です。少しづつ少しづつ勉強して、理解を深めているので自然と時間がかかってしまう。。まぁそんなこんなで今日はScheme手習いからlat?の問題。lat?とは本の中ではリストの中が…

Schemeのリストを探す旅

もうひとつのScheme入門を読みながら今リストを作るところを勉強中。進捗が遅いのにはふれないでください。 (Emacsの設定して遊んだり、Scheme手習いを読んだり、他にも色々本を読んでいるのです。)一旦、脳内整理。> (cons 1 ()) が (1) になるのがどうして…