S式でプログラミング言語つくろ!!

プログラミング言語の構文にS式を使うということ 構文に悩まされない カッコがすべてを包み込んでくれます パーサの実装が簡単 JSONのパーサを作ることができるならいける S式言語の実装が一つもない言語なんて存在しないので、既存の実装を参考にすればいい…

ニート終わりにS式でErlangライクなプログラミング言語作った

はじめに 会社を辞めてからそこそこの期間ニートでいたのですが、そろそろ社会復帰が必要になってしまいました。 貯蓄的な意味で。 だけれども何の成果もなくニートを終えるのは寂しいので、プログラミング言語を作ることにしました。 で、実装が一段落して…

Androidでモーダルダイアログ

今更だがAndroidではモーダルなダイアログが存在しない。 ダイアログ自体は存在するがそれはモードレスダイアログだけだ。 過去にはこちらのサイトにあるように、非UIスレッド上という制限付きだがモーダルダイアログが実現できていた。 先ほどのサイト内で…

リーダーマクロと行カバレッジとステップ実行を作った

これはKPF#x09のネタとして作成して発表したものです。台風の影響で勉強会は延期になってしまいましたが、これ以上公開を先延ばししたくないので予定通り公開します。 リポジトリはこちら。github上にあります。 今回はGaucheにリーダーマクロ、行カバレッジ…

Erlang R17 の名前つきローカル関数の速度

2014年4月9日にErlangの17.0がリリースされました。 17.0では新しいプリミティブタイプのMapsと専用のシンタックスが追加されて、そこそこ古い言語なのに意欲的だなぁという風に見ていました。 で、もう一つの大きな変更として、こちらのサイトでも紹介され…

Andrew K. Wrightのmatchを読む

いくつかのScheme処理系のパターンマッチライブラリとして採用されているAndrew K. Wrightのmatchライブラリがある。 このmatchライブラリがどのようなものかは、日本語だとGaucheのutil.matchモジュールのドキュメントがわかりやすい。 このmatchライブラリ…

Vimはもっと外の世界につながろうプラグイン作りました

無駄に壮大なタイトルの記事ですが、内容は単純。 (それなりに)汎用な外部プロセスとの対話プラグインを作りましたというお話。 以前この記事ではVim上からGaucheのREPLといちゃいちゃするためのプラグイを紹介しました。 今回紹介するプラグインはGoshREP…

LISP風VimScript「vise」

LISPが好きですか?ときかれたら「Yes」と答えるでしょう。 VimScriptが好きですか?ときかれたら「No」と答えるでしょう。 だけど、Vimが好きですか?ときかれたら「Yes」と答えるでしょう。 そんなわけで今回作ったvise(ビーズ)です。 これはKPF#x08のネタ…

Gauche開発支援拡張vim-gdev/emacs-gdev紹介

VimとEmacs上のそれぞれで動作するGauche開発支援の拡張スクリプトを開発しています。 開発に一区切りつけるためにこの辺で紹介記事としてまとめておきたいと思います。 なにはともあれ動作画面のスクリーンショットから。 このスクリプトではVimとEmacsでほ…

IMEを監視して現在行の色を変更するVisualStudio2010用拡張

タイトル通りのものを作りました。 ものすごく役に立つ、というわけではありませんが、あるとちょっと幸せになれるかもしれない拡張です。 スクリーンキャプチャだと↓な感じ。 IMEがOFF時。 IMEがON時。 ソースコードはこちら。 拡張をインストールするため…

vim_goshreplに自動use機能とwhich-module関数を追加しました

先日こちらで紹介したVim上で動作するGaucheのREPLプラグインに新しい機能を実装したので紹介します。 自動use機能 まだ読み込まれていないモジュールのシンボルを使用したときに、自動的に必要なモジュールをuseする機能です。 which-module関数 シンボルが…

Vim上でGaucheのREPLを動かす

※2012/5/4 追記 neocomplcache用のキーワードパターン記述を追加 タイトル通り、画像の通りのものを作りました。 Vim上からgoshREPLを扱うためのVimscriptです。 ソースコードはGithubにあります。こちら。 インストール方法は標準の方法と変わりないので割…

Gauche用OpenCVラッパー、Gauche-CVお披露目

お披露目とかタイトルで書いておきながら、まだとってもバギーなGauche-CVを紹介します。 ここ最近、Gauche-SDLとかgosh_completeとか他のあまり表に出していないもの物含めて、たくさんのGaucheプログラムを書いてます。 それらの書くきっかけになったのが…

neocomplcacheを利用したGauche用補完プラグインgosh_completeを作ってます(インストール篇)

※3月4日gosh_completeのインストール方法を修正しました。 タイトルがやたらと長くなってしまいましたが、何となくの思いたった勢いで、Vimのneocomplcacheのソースプラグインとして動作するGauche用補完プラグインを作成してます。 動作画面はこんな感じ↓ …

Gauche-SDLをWindowsで動かす

前回の記事で紹介したように、Gauche-SDLというGauche用SDL拡張ライブラリを作ってます。 そんなGauche-SDLをWindows環境でも手っ取り早く動かせるようにしたので、方法を記事としてまとめておきます。 今まではソースコード一式を取得して、MinGWを使って自…

Gauche-SDLでライフゲーム

最近になってGauche用のSDLラッパーを作成しているので、ここで一つ宣伝をしておきます。 SDLの詳細に関しては本家とかウィキペディアとかで。 作成しているGauche-SDLはこちらのgithub上にあります。 インストール方法などもろもろは同じくgithub上のWikiに…

テキストテンプレートのアセンブリのロードと名前空間の宣言

T4 C#

つーわけで今回はテキストテンプレート中でアセンブリをロードする方法と使用する名前空間の宣言を行う方法です。 と、書いてもピンと来ないかもしれないのでいいかえると、 アセンブリのロード => VisualStudioで参照の設定にdllを追加する。 名前空間の…

DynamicMethodで末尾再帰

C#

唐突ですがC#にはDynamicMethodというクラスがあります。 このクラスではILを直接指定することによって、プログラム実行時に動的にメソッドを作成することができます。 さっそく例 DynamicMethod method = new DynamicMethod("DynamicMethod", typeof(void),…

T4

T4

えー、更新がかなり久しぶりになってしまいました。 ちょうど2カ月ぶりですね。 なんかもう記事の書き方を忘れてしまいました。 そのようなどうでもいいことは置いておいて、さっそく今回のトピックスの紹介です。 その名も「T4」 何の略かというと「Text T…

任意の画像をAAに変換

AA

こんな感じ。 ちなみに画像編集の実装は全部自前です。

LINQの遅延評価とキャッシング

C#

C#3.0からLINQという機能が加わったのはいまさらですが、まだ知らない部分があったので今回はそれを紹介します。 ちなみにLINQの基礎的な部分はここでは解説しないので別サイトを参照してください。 まずLINQでは遅延評価というものが行われます。lazy list…

Graphics#DrawStringとTextRenderer.DrawTextとTextOut

C#

.NETで文字列をコントロールに描画するためのメソッドとして一番使うのはGraphicsクラスのDrawStringメソッドだと思います。 ほかにもSystem.Windows.Forms名前空間にTextRendererというクラスがありそのstaticメソッドであるDrawTextというメソッドを使うと…

Bitmapからリージョンの作成

C#

今回のトピックスはBitmapから自動でリージョンを作成する方法です。 何をしたいのかというとBitmapと同じ形のコントロールを作ろうということです。 まずこれを実現する方法の一つに、 FormクラスにはTransparencyKeyというプロパティがあり、そこに任意の…

IMessageFilter

C#

今回は最近知った機能を紹介します。 なにはともあれ次のコードを見てください。 class MessageFilter : IMessageFilter { private const int WM_KEYDOWN = 0x100; public bool PreFilterMessage(ref Message m) { if (m.Msg == WM_KEYDOWN) { switch ((int)…

staticかつabstract

一応前々から知ってはいたけど、staticでabstract(virtual)なメソッドはC#では定義できない。 最初そのことを知った時は「ふーん」と思っただけだった。 けどよくよく考えると結構きつい。 でも絶対にこれがないとどうしようもないというわけではない。 迂回…

Win32APIでコンソールをゴリゴリと

今まですべてC#と.Netに関係することを書いてきましたが、 今回はC/C++とWin32APIでのあれこれについて書きます。 ということで今回はコンソール用APIについてです。いきなりGUIについてではなくCUIについてです。 むしろWin32APIでGUIをあれこれする方法に…

Formをアクティブにせず表示

C#

Formクラスのインスタンスを表示する場合は、FormのインスタンスメソッドであるShow()を呼び出します。 もちろんShowなので表示されます。 そして新しいFormが表示されると今までアクティブだったFormはNonアクティブになります。 普通はこれでいいのですが…

XPのエクスプローラ左側っぽいもの

C#

こんなの こんな感じのものも自前で作れます。 もちろんビスタも対応。 当然見た目も変わります。 できるだけ本物をまねることを目標に作っているので、 下部分を閉じたり開いたりすることもできます。 下部分は単なるControlなので、 他のControlであるButt…

最大化できちゃうの

C#

ウィンドウが最大化できちゃうの。というお話。 C#のFormクラスにはMaximizeBoxというプロパティがあって、 それをfalseにすればウィンドウの最大化ボタンを無効にして最大化を出来ないようにするという機能があります。 こうすればキャプション部分をダブル…

C#のGeneric その2

C#

前回Genericについてちょっと書いたり、最近Genericを使ったコードを書いたんで、 気づいたことをちょこちょこと書きます。 まず最初に、継承元もしくは実装するインタフェースがジェネリックの場合自分自身を型引数に渡すことができます。 interface I<T> { vo</t>…