プログラミング
とりあえず問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 …
『文學界』10月号に載っている円城塔「プロローグ」第6回で少しだけLispやSchemeやGaucheについての話題になっていた。小説でGaucheへの言及があるのは他は木本雅彦『くあっどぴゅあ』だけだろうか。 Lispの処理系を入れたが、対話環境を触っても釈然とせず…
主要な素因数分解アルゴリズム SQUFOFについて
http://blog.practical-scheme.net/shiro/20130216a-factorizeを読んで疑問に思ったので調べた。
(以前疑問に思ったところで再び同じ疑問を感じて解決していないので記録しておく) RFC 2388はmultipart/form-data形式を定義している。 フォームを使うとき特に指定をしないと、multipart/form-data形式ではなくapplication/x-www-form-urlencoded形式によっ…
ウィンドウについての主な操作のまとめ (「VimでのSchemeプログラミング」に追記したもの)
LispやSchemeがとっつきにくく感じられる理由の一つに、プログラミング支援機能がまったくない状態だとすごくプログラムが書きにくいことがあるんじゃないかと思う。インタプリタを立ち上げてみてもカッコの対応表示機能がないとちょっとした式の入力も苦労…
Tutorial DやLINQがあるから「出てこない」というのは本当は正しくないけど、プログラミング言語については野心的なものから冗談みたいなものまで色々な言語が日々作られているのと比較すると、関係データベース向けの言語は全然出てこないという印象がある…
ファイルやディレクトリ操作がからむテストでは、必要なファイルやディレクトリはなるべくテストのときに作成する。環境に影響を与えないようする(すでに存在しているファイルの変更や消去を避ける手立て。作ったファイルの後片付け)。あらかじめ用意したフ…
プログラムを書くときにはテストを必ず書こうと思ってから、なかば予想したとおりではあるけどプログラムを全く書かなくなった(テストを書く方法として次のような話を見たことがある。printデバッグを一切しない。実行結果をprintで表示することによる動作確…
持続的接続を扱うと面倒になるという話の続き。
xUnitとその類似 多くの場合、次のような仕組み・機能を持っている。
プログラムのテストについて書かれている本(でタイトルには「テスト」と入っていないもの)5冊
何となくの知識しか持っていないHTTPの動作を理解するために、Gaucheのrfc.httpモジュールを使わずHTTPクライアント用の低レベルライブラリを書いてみることにした。rfc.httpモジュールを使わないのは持続的接続(Keep Alive)の動作を知りたいからという理由…
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)で、失敗やバックトラックの可能性がある場…
「プログラミング言語の基礎知識」のメモ (イントロ部分は省略) 原理的には、プログラミング言語には、チューリングマシンと同等の計算記述能力(+外部リソースを扱う機能)があれば良い。しかし、複雑なプログラムを書くのは簡単な作業ではない。 ではプログ…
rlwrapコマンドを使うと、入力にReadLineの機能が使えるようになる。また補完機能やカッコの対応表示も働く。キーバインドは→GNU Readline Library:1.4 Bindable Readline Commands ヒストリ(Ctrl+p、Ctrl+nなど)と補完(Tab)だけでもかなり便利。 rlwrapをGa…
どうやってテストするべきなのかよく判らないもののひとつに浮動小数点数がある。どこをどうやってテストしていいかがそもそも全然判らないものよりはマシかもしれないけれど。 複雑な数値計算で精度がすごく重要とか場合でなければ、多少の誤差はあまり気に…
Lispについて教えてほしいということで始まった。 教える相手2人はLispについて名前を聞いたことがあるくらい(1人はプログラミング自体したことがない)で別にLispやSchemeである必要は全くないので、Rubyをすすめたのだけど受け入れられず、結局Schemeになっ…
「Gaucheでの文字列の作り方のメモ」だけだとtext.treeの機能がstring-appendやstring-concatenateとあまり変わらないように見えるので、追加で使用例をあげる。
http://winnie.kuis.kyoto-u.ac.jp/~okuno/Lecture/05/IntroAlgDs/Escher-Limit.htmlを見て、実際に双曲幾何(非ユークリッド幾何の一種)の描画プログラムを書いてみようと思ったのだけど 円盤の端に近づくと計算の誤差がひどい 各タイルを漏れなし重複無しで…
いつも文字列を作る場面になってからマニュアルを探し始めるので、少しまとめておく。
リンクをたどっていくつか巡回するだけの簡単なクローラを作ってみたら、戸惑うところが多かったので、まずはそのメモ。
「sxpathがとてもわかりにくい」の補足。 sxpathのクエリに正規表現を埋め込めるようにしてみた。
sxpathを使ってみようとしたら、とてもわかりにくかったのでメモ。
gauche.interactiveモジュールのinfo関数を使うとマニュアルを読むことができる。ただし英語で。