Scheme
math.runge-kutta とか作ろうかと思った。思っただけ。
というわけで問題。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を使ったら幸せになれますよ*1。違うか。 単に無名関数(ラムダ式)をクロージャと呼んでいるのかな? それとも、無名関数とそこに出現する(ローカルでない)変数の束縛(環境と呼ぶんだったかな)を一緒にしたもの?後者の意味だとして、たまた…
7分ほどかかってしまいましたすいません。 1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。ちゃんとしたプログ…
身の回りに再帰的な構造を見つけると嬉しくなる 命令的な言語(C,Java,etc...)を見下しがち S式は素晴らしいと周囲に言いふらす でも何が素晴らしいのかよくわかってない どの言語を使っていても、ループを末尾再帰したくなる 副作用が嫌い 副作用が嫌いなの…
最近カヤック星人が流行っているとかいないとか。あっちはJavaでやってた仕事をRubyでやりましょ、みたいな話(だと思う。読んでないからしらない)。こっちは、Javaで書けるものってSchemeでも書けるよね。その証拠に、それJavaからSchemeに変換できるよ、み…
美しい朝に、美しい世界で遊ぶのは楽しい。(define-syntax J ...)
戦略を変更して書き直し中。今悩んでいるのが、クラスの定義で、メソッド(クロージャ)のデータをどこに持たせておくか、という点。現在は、クラス名のシンボルをスロットのリストに束縛してあるんだけど、メソッドのスロットで、メソッド本体をS式として保…
オレオレオブジェクトシステムはあとちょっとで完成なんだけど、スロット(Javaでいうフィールドかな)の部分を展開するマクロがなかなか上手く書けない。とりあえず今日は諦めて、実験の予習とか溜ってる仕事をやっつけることにする。
マクロの展開形は書けた。クラス定義のマクロもできた。あとは、クラス定義のマクロからインスタンス(クロージャ)を作り出すマクロを作るだけ。それができたら、あとはインスタンスを使いやすくするためのマクロとか関数をちょろっと書いて終了。しかし、syn…
前回の学科の読書会にて、「Lispならオブジェクト指向のシステムは言語仕様として組込まなくてもいいんだぜ。自分で作ることだってできるんだぜ」と言ったのだけれど、言うは易し行うは難しということで、実際に作ってみることにした。とりあえず、今はクラ…
いつしか作ろうと思って放置していたオレオレ記法のパーサーを作るために、Rui:ParsingExpressionGrammarを試す。いろいろ試しているけど、すぐにループに陥ってしまったり、思いどおりの文字列を掴まえられなかったり。EBNFも構文解析もまともに勉強したこ…
大人のためのブラックボックス読解講座――クロージャとオブジェクトの微妙な関係 (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…
先週はテストがあったので休んだ。が、実際は勉強などしていなかった。 読書会 SKKの会になった。 SKK SKKをUbuntuにインストールしてみた。Anthyがアンインストールされる日は近い、か?
トラバに気がついたのが21時。まだ英語の試験勉強が全然進んでいない。どうする俺、どうする?→迷うことなくソースの修正へhttp://d.hatena.ne.jp/scinfaxi/20070122/1169461899 tps->string から ps-stack->string がコールされてるけど tps-stack->string …
テスト前になるとコードを書く速度があがりますねぇ。そんなわけでSchemeでPostScriptするライブラリを超適当に書いたので一応公開。ad-hockな実装な上に、中途半端に作ってない部分とか、命名規則が一貫してないとかいろいろダサいですが。Gaucheのオブジェ…
赤坂某所にて。会場提供ありがとうございます。 読書会 去年最後の読書会から3週間くらい?経ったということで、自分を含めほぼ全員が何をやっていたのか失念。鳥頭!データ主導なんたらの、記号微分の問題を解く続きから始まった。記号微分で、SICPの指数関…
計算論 計算可能性とラムダ計算 (コンピュータサイエンス大学講座) をSchemeで - [・ _ゝ・]日記を書くはやみずさん 原始帰納関数って? 原始帰納関数とは、3つの基本関数 零関数 サクセッサー関数 射影関数 と、関数合成および原始帰納法により構成される関…
計算論 計算可能性とラムダ計算 (コンピュータサイエンス大学講座)を遅々としたペースで読み進めていて、これSchemeでやったらどうなるんだろうね、と思って始める。このエントリをインデックスにしていくよ。 原始帰納関数〜3つの関数と1つの手続きから広が…
読書会 赤坂の某ラボさん会場提供ありがとうございます。今日も前回に引き続き音読。これ写経するのだるいなーと思っていたら、すぎもとさんから「結局次の問題では使わない」とネタばらしばあったため写経しないことにした!これだからLazynessなやつは困る…
こんにちは。いまだにLispをLsipとかLipsとtypoするはやみずです。Practical Common Lispを読み始めた。最初の方は、Common Lispとはどういうものか、ということについて書いてあった。途中でSchemeが出てきたけど、こういう風に言われるとたしかにSchemeだ…
竹内関数を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 ((…
カリー化してみた (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…
The Little SchemerでY Combinatorの部分を読んだので、忘れないうちに復習。階乗とか作ってみた。The Little SchemerのY Combinator は引数が1つの手続きしか作れないから、applyを使って任意個の引数を取る手続きを生成できるように、ちょっと拡張した。調…
apply を自前で実装するときに、マクロを使わずに実装可能か?と思った直後に思いついた。 (define (my-apply proc ls) (eval (cons proc ls) (interaction-environment)))初めての人のためのLisp読んでて、S式はただのリストで、評価しようと考えたときに初…
読書会 最初に6人しかいなくて最少人数記録更新かと思われたが、あとから人が増えた。 Lisp/lambdaの夢 入がλに見える むしろλに他ならない if なのか cond なのか、それが問題だ 始めて本文をみんなで音読した。読書会っぽかった(いままでは? 読書会後 見…
再帰の章(Chapter 9 ... and Again, and Again, and Again, ...)を読み進める。今までとは違い、徐々に難しさが増してきたので、脳内評価に限界が出てきたかので実際にコードを書いて動かしたりしてみる。全域的再帰関数、部分的再帰関数、Ackerman関数とか…
今週は月島某所。会場提供ありがとうございます! 読書会前 ハフマン符号木の宿題をやる。 読書会 ハフマンする。 読書会後 ブログと見せかけた壮大なプログラムの話で盛り上がる。弾さんストックしてあるネタを1つみせてもらった。スゴス。