Scheme

なんとなく

math.runge-kutta とか作ろうかと思った。思っただけ。

reduce(r|l)

というわけで問題。reducelとreducerを実装せよ。制限時間はあわせて10分。ただし、reducelとreducerは、Haskellにおいて次の挙動を示すものとする。 *Main> reducel (\x y -> "("++x++"#"++y++")") $ map show [1..4] "(((1#2)#3)#4)" *Main> reducer (\x y…

それSchemeで

それSchemeを使ったら幸せになれますよ*1。違うか。 単に無名関数(ラムダ式)をクロージャと呼んでいるのかな? それとも、無名関数とそこに出現する(ローカルでない)変数の束縛(環境と呼ぶんだったかな)を一緒にしたもの?後者の意味だとして、たまた…

いちおうプログラマですから

7分ほどかかってしまいましたすいません。 1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。ちゃんとしたプログ…

わなびーSchemerの10の特徴

身の回りに再帰的な構造を見つけると嬉しくなる 命令的な言語(C,Java,etc...)を見下しがち S式は素晴らしいと周囲に言いふらす でも何が素晴らしいのかよくわかってない どの言語を使っていても、ループを末尾再帰したくなる 副作用が嫌い 副作用が嫌いなの…

From Java to Scheme

最近カヤック星人が流行っているとかいないとか。あっちはJavaでやってた仕事をRubyでやりましょ、みたいな話(だと思う。読んでないからしらない)。こっちは、Javaで書けるものってSchemeでも書けるよね。その証拠に、それJavaからSchemeに変換できるよ、み…

午前7時、安田講堂前にてScheme

美しい朝に、美しい世界で遊ぶのは楽しい。(define-syntax J ...)

俺々オブジェクトシステムその後

戦略を変更して書き直し中。今悩んでいるのが、クラスの定義で、メソッド(クロージャ)のデータをどこに持たせておくか、という点。現在は、クラス名のシンボルをスロットのリストに束縛してあるんだけど、メソッドのスロットで、メソッド本体をS式として保…

マクロでつまる

オレオレオブジェクトシステムはあとちょっとで完成なんだけど、スロット(Javaでいうフィールドかな)の部分を展開するマクロがなかなか上手く書けない。とりあえず今日は諦めて、実験の予習とか溜ってる仕事をやっつけることにする。

オレオレオブジェクトシステム完成間近

マクロの展開形は書けた。クラス定義のマクロもできた。あとは、クラス定義のマクロからインスタンス(クロージャ)を作り出すマクロを作るだけ。それができたら、あとはインスタンスを使いやすくするためのマクロとか関数をちょろっと書いて終了。しかし、syn…

Schemeでオブジェクトシステム自作

前回の学科の読書会にて、「Lispならオブジェクト指向のシステムは言語仕様として組込まなくてもいいんだぜ。自分で作ることだってできるんだぜ」と言ったのだけれど、言うは易し行うは難しということで、実際に作ってみることにした。とりあえず、今はクラ…

ParsingExpressionGrammer を試す

いつしか作ろうと思って放置していたオレオレ記法のパーサーを作るために、Rui:ParsingExpressionGrammarを試す。いろいろ試しているけど、すぐにループに陥ってしまったり、思いどおりの文字列を掴まえられなかったり。EBNFも構文解析もまともに勉強したこ…

ITmediaより「クロージャとオブジェクトの微妙な関係」

大人のためのブラックボックス読解講座――クロージャとオブジェクトの微妙な関係 (1/2) - ITmedia エンタープライズShiroさんの記事。どっかで読んだことがあると思ったら、オープンソースマガジンの記事だった。

喪失

この前書いたGaucheからLingr APIを呼ぶスクリプトをちょっといじろうと思ったら、なぜかファイルがない。間違えて知らぬまに消してしまったんだろうか。。。

自分自身を出力するプログラム

なんか今日の授業のページに書いてあった。 ((lambda (x) `(,x ',x)) '(lambda (x) `(,x ',x))) YABUKI Taro’s Home Page | 2018/08/19 フィードのURLが変わりました。に書いてあるLisp版をSchemeで書いてみる。 (begin (define b '(lambda (x) `(begin (def…

第46回素人くさいSICP読書会

先週はテストがあったので休んだ。が、実際は勉強などしていなかった。 読書会 SKKの会になった。 SKK SKKをUbuntuにインストールしてみた。Anthyがアンインストールされる日は近い、か?

黎明日記の中のひとにTiny-PSを添削してもらったお

トラバに気がついたのが21時。まだ英語の試験勉強が全然進んでいない。どうする俺、どうする?→迷うことなくソースの修正へhttp://d.hatena.ne.jp/scinfaxi/20070122/1169461899 tps->string から ps-stack->string がコールされてるけど tps-stack->string …

SchemeでPostScriptするライブラリ Tiny-PS 作ったよ

テスト前になるとコードを書く速度があがりますねぇ。そんなわけでSchemeでPostScriptするライブラリを超適当に書いたので一応公開。ad-hockな実装な上に、中途半端に作ってない部分とか、命名規則が一貫してないとかいろいろダサいですが。Gaucheのオブジェ…

第44回素人くさいSICP読書会

赤坂某所にて。会場提供ありがとうございます。 読書会 去年最後の読書会から3週間くらい?経ったということで、自分を含めほぼ全員が何をやっていたのか失念。鳥頭!データ主導なんたらの、記号微分の問題を解く続きから始まった。記号微分で、SICPの指数関…

原始帰納関数〜3つの関数と1つの手続きから広がる世界

計算論 計算可能性とラムダ計算 (コンピュータサイエンス大学講座) をSchemeで - [・ _ゝ・]日記を書くはやみずさん 原始帰納関数って? 原始帰納関数とは、3つの基本関数 零関数 サクセッサー関数 射影関数 と、関数合成および原始帰納法により構成される関…

計算論 計算可能性とラムダ計算 (コンピュータサイエンス大学講座) をSchemeで

計算論 計算可能性とラムダ計算 (コンピュータサイエンス大学講座)を遅々としたペースで読み進めていて、これSchemeでやったらどうなるんだろうね、と思って始める。このエントリをインデックスにしていくよ。 原始帰納関数〜3つの関数と1つの手続きから広が…

第43回素人くさいSICP読書会

読書会 赤坂の某ラボさん会場提供ありがとうございます。今日も前回に引き続き音読。これ写経するのだるいなーと思っていたら、すぎもとさんから「結局次の問題では使わない」とネタばらしばあったため写経しないことにした!これだからLazynessなやつは困る…

Practical Common Lispを読み始めた

こんにちは。いまだにLispをLsipとかLipsとtypoするはやみずです。Practical Common Lispを読み始めた。最初の方は、Common Lispとはどういうものか、ということについて書いてあった。途中でSchemeが出てきたけど、こういう風に言われるとたしかにSchemeだ…

引き続きY Combinator

竹内関数をY Combinator による実装と、素直な実装でベンチマーク。 (define tak (Y (lambda (f-tak) (lambda (x y z) (cond ((> x y) (f-tak (f-tak (- x 1) y z) (f-tak (- y 1) z x) (f-tak (- z 1) x y))) (else y)))))) (define (r-tak x y z) (cond ((…

自作applyを使った何か

カリー化してみた (define (currying proc num) (define (currying-step proc num params) (cond ((= num 0) (eval (cons proc (reverse params)) (interaction-environment))) ; ここがapply (else (lambda (x) (currying-step proc (- num 1) (cons x para…

Y Combinatorで再帰

The Little SchemerでY Combinatorの部分を読んだので、忘れないうちに復習。階乗とか作ってみた。The Little SchemerのY Combinator は引数が1つの手続きしか作れないから、applyを使って任意個の引数を取る手続きを生成できるように、ちょっと拡張した。調…

apply 考

apply を自前で実装するときに、マクロを使わずに実装可能か?と思った直後に思いついた。 (define (my-apply proc ls) (eval (cons proc ls) (interaction-environment)))初めての人のためのLisp読んでて、S式はただのリストで、評価しようと考えたときに初…

第42回素人くさいSICP読書会

読書会 最初に6人しかいなくて最少人数記録更新かと思われたが、あとから人が増えた。 Lisp/lambdaの夢 入がλに見える むしろλに他ならない if なのか cond なのか、それが問題だ 始めて本文をみんなで音読した。読書会っぽかった(いままでは? 読書会後 見…

Little Schemerを読み進める

再帰の章(Chapter 9 ... and Again, and Again, and Again, ...)を読み進める。今までとは違い、徐々に難しさが増してきたので、脳内評価に限界が出てきたかので実際にコードを書いて動かしたりしてみる。全域的再帰関数、部分的再帰関数、Ackerman関数とか…

第41回素人くさいSICP読書会

今週は月島某所。会場提供ありがとうございます! 読書会前 ハフマン符号木の宿題をやる。 読書会 ハフマンする。 読書会後 ブログと見せかけた壮大なプログラムの話で盛り上がる。弾さんストックしてあるネタを1つみせてもらった。スゴス。