2010-01-01から1年間の記事一覧

Now and Forever

by Richard Marx

mapcanってなによ

なんとなくOn Lispを読み始めた。読む本には不自由していない。向こう数年、することも無いだろう。 さて、3章の終盤で 彼らは副作用を使う部分をいくつかの関数に隔離し、プログラムの大部分は純粋に関数型スタイルで書けるようにする。 関数が副作用を使う…

環境と継続

現在のsacallopでは、関数適用を次のような(うさん臭い)方法・手順で評価している。 先頭要素のlambda式の評価でクロージャを生成する時、不完全な環境フレーム(名前だけで、値がまだ対応付けられていない)を作って、クロージャに保持させる*1。 引数を…

VMだった

昨晩、Gaucheのソースを読み始めてすぐ挫折したけど、それでもすぐ分かったことがある。スタックが溢れちゃうことについて。要はスタックごとこしらえれば良いってこと。僕はド素人なので、スタックは与えられるものだという先入観があった。スタックが溢れ…

chibi-scheme

アドバイスいただいた。 @yagiey_tw まずは chibi-scheme あたりの小さい処理系を参考にする方が良いかも http://twitter.com/SaitoAtsushi/statuses/16518986703310849 GitHub - ashinn/chibi-scheme: Official chibi-scheme repositoryからソースダウンロ…

A Night in Tunisia

by Dizzy Gillespie

ひらメソッド

Schemeプログラミングもろくにできないくせに、Schemeを作りたくて仕方がない。ってことでGaucheのソースコードをダウンロードして読み始めたけど、すぐ途方に暮れた。そんなことをツイートしてたらこんな返信を頂いた。 @yagiey_tw おせっかいします。http:…

純Lispにしたい

とりあえず、現時点で純LISPにはなってるみたい?自信ないけど。 http://d.hatena.ne.jp/yagiey/20101203/1291381516 いやいやいや、繰り返しの構文を持たないscallopにおいて関数適用の深さに限りがあるってことは、チューリング完全じゃないよな。ってこと…

難読化と多言語化

今まで日本語のみで作成していたC#のプログラムを以下の手順で多言語化し、その後NanDoKuで難読化したところ日本語が出なくなった。 フォームのデザイン時にLocalizableプロパティをTrueに変更 まずLanguageプロパティを「(既定値)」にして英語でデザイン …

例外の階層

PHP

標準のPHPで提供されている例外にどんなものがあるのか調べたのでメモメモ。 Exception すべての例外の基底クラス ErrorException エラー例外 LogicException 論理式が無効な場合にスローされる例外 BadFunctionCallException 未定義の関数をコールバックが…

PHPでオーバーロードしたい

オーバーロードは空気のように当たり前の存在だったので、当然のようにPHPでやってしまってエラーが出た。エラーメッセージの意味を理解するのに数秒かかったくらいだ。そのとき、 オーバーロードは実行時のオブジェクトの型ではなく、変数の型が分からない…

sexing

昨晩、このはてなダイアリーを更新した後に、久しぶりにTopHatenarの再集計を申請してみた。そのときの画像認証がこんなんだった。 僕は脳みそが中学生なので、一人でテンションがあがってた。イェーイ。

PHP間でのオブジェクトの受け渡し

先日の話の続きで、PHP間でデータを受け渡しに関して。その方法をリサーチして、自分なりにいくつかの候補に絞って、それぞれについて実験してみたのでメモメモ。情報を送信する側のPHPをsend.php、受信する側のPHPをreceive.phpとし、受け渡しするデータは…

自戒

スレッドセーフについてちゃんと勉強しないとだめだ。

PHPはじめた

PHP

仕事でPHPを使い始めたが慣れてないので非常に苦労している。特に変数名に$付け忘れたり、変数名をタイポしたり等が多い。eclipseとかIDE使えばもっとはマシになるんだろうけど。本当に初心者くさい間違いでイライラしつつも、大学でC言語を始めた時の感覚を…

ルージュの伝言

From "AniMeja", by Meja アニメイヤ~ジブリ・ソングス~アーティスト: メイヤ出版社/メーカー: SMJ発売日: 2010/07/21メディア: CD購入: 6人 クリック: 31回この商品を含むブログ (13件) を見る

Scapegoat

From "Soul Of a New Machine", by Fear Factory

StackOverflowExceptionはcatchできない

僕は素人なので、Lisp処理系作ったらとりあえずYコンビネータ動かしてみたくなる。ってことで、scallopでもやろうとして、間違って次のようなコードを評価してしまった。 (define Y (lambda (f) ((lambda (g) (g g)) (lambda (g) (f (lambda (x) ((g g) x)))…

scallop

ムラムラしてきたので、なんとなく俺Lisp作り始めた。SICPはもはや積読タワーで埃をかぶってます。 んで、ついでに先日作ったGitHubアカウントでリポジトリ(https://github.com/yagiey/scallop)を公開しておいた。ぼちぼち勉強しながらとりあえずはR5RSに…

One Flight Down

From "Come Away With Me", by Norah Jones Come Away With Meアーティスト: Norah Jones出版社/メーカー: Blue Note Records発売日: 2002/02/01メディア: CD購入: 7人 クリック: 81回この商品を含むブログ (181件) を見る

github初めの一歩

githubを始めようと、他のサイトやらを参考にアカウントの取得、アバターの設定、リポジトリの作成はできた。だけど SSHって何? 公開鍵の登録って何? ssh-keygenやssh-addって一体何をやってんのよ? ってな状態だったので、ちょっと調べてみた。SSHの仕組…

Without You

From "No Dice", by Badfinger

Monoのアンインストール

Mac上のmonoでC#を書いたりしてるけど、バージョンが2.4とかなり古かった。初めから入ってたのか自分で入れたのか覚えてない。 port installed で出てこないので、少なくともMacPortsによるものではなさげ。せっかくだからMacPortsで探してみたけど、バージ…

github

githubのアカウント作った。リポジトリも作った。だけどコミット(gitではコミットっていうのかな?)する方法が分からない。だめだこりゃ。 明日にでもググってみよう。 ぐぐってみた 変更内容をサーバの方に反映させることをコミットじゃなくてpushという…

Don't Stop Believing

From "Escape", by Journey Escapeアーティスト: Journey出版社/メーカー: Sony発売日: 2006/08/08メディア: CD クリック: 9回この商品を含むブログ (15件) を見る

動的なDLLのロード

C#

とあるシステムをC#で開発している人から、 実装の詳細は異なるけど同じ働きをする同じ名前のクラスを別々のDLLに入れといて、実行時にそれらをロードして簡単に切り替えて使いたいけど、何か良い方法は無いかな? と尋ねられたので考えてみた。要は、何通り…

Song For Two Wheels

From "Uphill City", by I Am Robot And Proud アップヒル・シティアーティスト: I am Robot and Proud出版社/メーカー: Youth発売日: 2008/09/17メディア: CD購入: 1人 クリック: 54回この商品を含むブログ (78件) を見る

環境

環境をどう実装したらいいのか考えていたら、(R5RSでは)各実装に任せられているそうな。 R5RSのevalは、第二引数に「環境指定子(environment specifier)」を取ると定義されている。 (eval form environment-specifier) しかし、環境指定子の具体的な実装は…

Green Grass Of Tunnel

from "Finally We Are No One", by Múm Finally We Are No Oneアーティスト: Mum出版社/メーカー: Fat Cat発売日: 2002/05/28メディア: CD購入: 8人 クリック: 56回この商品を含むブログ (56件) を見る

プッシュダウンオートマトンでS式の作成

先日教えてもらったアルゴリズムで字句の列からS式を構築するパーザを作ってみた。ここに恥を晒しておく。 // 字句の列からS式を作る public SExp Parse(IEnumerable<LexerToken> tokens) { IEnumerator<LexerToken> itor = tokens.GetEnumerator(); SExp exp = null; if (itor.MoveN</lexertoken></lexertoken>…