プログラミング

Rust入門を兼ねてプロジェクト・オイラーの問題を解く

とりあえず問100まで解くことに決めて始めたのだけど、問題の難易度やプログラムを書く面倒さが速いペースで増加していくので割と早い段階で問題を解くことが優先になって、Rustの機能やライブラリを理解することがおざなりになってしまった。 それでも言語…

プログラミングにおけるモナドの初期の歴史について

P. Wadler "How to Replace Failure by a List of Successes" (1985) E. Moggi "Computational Lambda-Calculus and Monads" (1988) M. Spivey "A Functional Theory of Exceptions" (1990) E. Moggi "Notions of Computation and Monads" (1991) P. Wadler …

Lispの壁の高さ

『文學界』10月号に載っている円城塔「プロローグ」第6回で少しだけLispやSchemeやGaucheについての話題になっていた。小説でGaucheへの言及があるのは他は木本雅彦『くあっどぴゅあ』だけだろうか。 Lispの処理系を入れたが、対話環境を触っても釈然とせず…

素因数分解アルゴリズム(特にSQUFOF)のこと

主要な素因数分解アルゴリズム SQUFOFについて

素因数分解プログラムについてのメモ

http://blog.practical-scheme.net/shiro/20130216a-factorizeを読んで疑問に思ったので調べた。

RFC 2388(multipart/form-data形式)についての疑問

(以前疑問に思ったところで再び同じ疑問を感じて解決していないので記録しておく) RFC 2388はmultipart/form-data形式を定義している。 フォームを使うとき特に指定をしないと、multipart/form-data形式ではなくapplication/x-www-form-urlencoded形式によっ…

Vimのウィンドウ操作

ウィンドウについての主な操作のまとめ (「VimでのSchemeプログラミング」に追記したもの)

VimでのSchemeプログラミング

LispやSchemeがとっつきにくく感じられる理由の一つに、プログラミング支援機能がまったくない状態だとすごくプログラムが書きにくいことがあるんじゃないかと思う。インタプリタを立ち上げてみてもカッコの対応表示機能がないとちょっとした式の入力も苦労…

SQL以外の関係データベース言語が出てこない理由を考える

Tutorial DやLINQがあるから「出てこない」というのは本当は正しくないけど、プログラミング言語については野心的なものから冗談みたいなものまで色々な言語が日々作られているのと比較すると、関係データベース向けの言語は全然出てこないという印象がある…

Rubyのテストについてのメモ

ファイルやディレクトリ操作がからむテストでは、必要なファイルやディレクトリはなるべくテストのときに作成する。環境に影響を与えないようする(すでに存在しているファイルの変更や消去を避ける手立て。作ったファイルの後片付け)。あらかじめ用意したフ…

テストの仕方についてのメモ

プログラムを書くときにはテストを必ず書こうと思ってから、なかば予想したとおりではあるけどプログラムを全く書かなくなった(テストを書く方法として次のような話を見たことがある。printデバッグを一切しない。実行結果をprintで表示することによる動作確…

HTTPの持続的接続を扱う

持続的接続を扱うと面倒になるという話の続き。

単体テストのための枠組み・ライブラリについて

xUnitとその類似 多くの場合、次のような仕組み・機能を持っている。

プログラムテストの本について

プログラムのテストについて書かれている本(でタイトルには「テスト」と入っていないもの)5冊

HTTPプログラムの書き方とテストするためのサーバー

何となくの知識しか持っていないHTTPの動作を理解するために、Gaucheのrfc.httpモジュールを使わずHTTPクライアント用の低レベルライブラリを書いてみることにした。rfc.httpモジュールを使わないのは持続的接続(Keep Alive)の動作を知りたいからという理由…

Gaucheの仮想ポートの使用例

gauche.vportで提供される仮想ポートを使うと、ポートのように振る舞うオブジェクト(=ポート)を自分でカスタマイズして作ることができる。仮想ポートの使用例として、HTTPのレスポンスで送られてくるメッセージ本体を仮想ポートを使って読み込んでみる。

クライアント側でのクッキーの扱い方

Gaucheでクライアント側でのクッキー処理のプログラムを書こうとしたら、 クッキーの知識を全然もっていないことに気づいたのでメモ。

字下げ依存構文の解析

Python、Haskell、YAMLのように行頭の字下げが文法構造に影響を与えるような構文を、字下げ依存構文(indentation-sensitive syntax)と呼ぶことにする。 Peter J. Landin「The Next 700 Programming Languages」(pdf)では、字下げ依存構文のための規則をオフ…

モナドの初歩

リスト フィリップ・ワドラー(Philip Wadler)は 「How to replace failure by a list of successes: a method for exception handling, backtracking, and pattern matching in lazy functional languages」(1985)で、失敗やバックトラックの可能性がある場…

関心の局所化と静的な記述

「プログラミング言語の基礎知識」のメモ (イントロ部分は省略) 原理的には、プログラミング言語には、チューリングマシンと同等の計算記述能力(+外部リソースを扱う機能)があれば良い。しかし、複雑なプログラムを書くのは簡単な作業ではない。 ではプログ…

改めてGaucheとrlwrapの連携について

rlwrapコマンドを使うと、入力にReadLineの機能が使えるようになる。また補完機能やカッコの対応表示も働く。キーバインドは→GNU Readline Library:1.4 Bindable Readline Commands ヒストリ(Ctrl+p、Ctrl+nなど)と補完(Tab)だけでもかなり便利。 rlwrapをGa…

浮動小数点数に対するテスト

どうやってテストするべきなのかよく判らないもののひとつに浮動小数点数がある。どこをどうやってテストしていいかがそもそも全然判らないものよりはマシかもしれないけれど。 複雑な数値計算で精度がすごく重要とか場合でなければ、多少の誤差はあまり気に…

Schemeの勉強会をやることになったのでメモ

Lispについて教えてほしいということで始まった。 教える相手2人はLispについて名前を聞いたことがあるくらい(1人はプログラミング自体したことがない)で別にLispやSchemeである必要は全くないので、Rubyをすすめたのだけど受け入れられず、結局Schemeになっ…

text.treeの使用例

「Gaucheでの文字列の作り方のメモ」だけだとtext.treeの機能がstring-appendやstring-concatenateとあまり変わらないように見えるので、追加で使用例をあげる。

双曲幾何のタイル張り

http://winnie.kuis.kyoto-u.ac.jp/~okuno/Lecture/05/IntroAlgDs/Escher-Limit.htmlを見て、実際に双曲幾何(非ユークリッド幾何の一種)の描画プログラムを書いてみようと思ったのだけど 円盤の端に近づくと計算の誤差がひどい 各タイルを漏れなし重複無しで…

Gaucheでの文字列の作り方のメモ

いつも文字列を作る場面になってからマニュアルを探し始めるので、少しまとめておく。

Gaucheでクローラを書くことと、そのためのライブラリ

リンクをたどっていくつか巡回するだけの簡単なクローラを作ってみたら、戸惑うところが多かったので、まずはそのメモ。

sxpathのクエリに正規表現を書けるようにする

「sxpathがとてもわかりにくい」の補足。 sxpathのクエリに正規表現を埋め込めるようにしてみた。

sxpathがとてもわかりにくい

sxpathを使ってみようとしたら、とてもわかりにくかったのでメモ。

Gaucheのinfo関数の表示を日本語にするには

gauche.interactiveモジュールのinfo関数を使うとマニュアルを読むことができる。ただし英語で。