メモリアロケーションとコンテキストスイッチの関係

OCamlのコンテキストスイッチのタイミングを調べた。OCaml では OSネイティブのスレッド (pthread) を使える。 しかし、OCamlのランタイム内で同時に走るネイティブスレッドは1本だけ、という制限がある。OCamlはスレッドセーフなGCを備えていないためだ。 …

OCamlをAndroidにポーティングした

最新版はこちら (2010/12/8)OCaml を Android に移植しました。具体的には OCaml のバイトコードを Android で実行できるようになった OCaml のソースから Androidのネイティブコードを生成できるようになった という感じです。 caml-listにもポストしたよ。…

Android (Googleケータイ) でデモをつくった

某Webアプリに飽きたのでさくっとお気に入りのデモを作ってみた。 たぶんこれ以上は作らない。 動画 ソース http://sites.google.com/site/koyamakannon/Home/android-plasma.zip

型レベルの何か

apply (undefined :: n -> Succ (Succ n)) Zero :: Succ (Succ Zero) 型レベルのλ (System FのΛ)があったらいいのにーという風に理解したのですがそりゃ難しそうに思えます. 難しくありませんでした.何かそれっぽいのができました.知りもしないのに適当な…

Mac OS X で F#

MacPorts から F# を入れて触ってみました. インストール sudo port install fsharp インタプリタの起動 fsi しばらく待つと mono がむっくりと起き上がって,プロンプトがでます。 もし起動しない場合は, bashrc に export DYLD_FALLBACK_LIBRARY_PATH=/us…

型レベル高階関数 (?)

id:eagletmt さんが Haskell の型レをやっているのでコメントをポチポチ書いています ただ,これだとちょっと残念なことがあって,例えば2つ足す場合, data Succ2F = Succ2F instance Apply Succ2F x (Succ (Succ x)) と,わざわざ書かなければならない. …

Ocsigenについて OCaml Meeting Tokyo 2009 で話しました!

ピンチヒッターとしてLTではなく普通のセッションをいただきました! スライドは以下: http://www.agusa.i.is.nagoya-u.ac.jp/person/sydney/ocaml/ocsigen-omt2009-black.pdf# slideshareがこのスライドを受けとってくれません

Ocsigen/Eliom と PG'OCaml を使った Web開発サンプル (OMakefile付き)

明日の OCaml Meeting Tokyo 2009 で Eliom/Ocsigen について LTします! これに備えて、 Eliom と PG'OCaml を使ったサンプルアプリを準備しました! Eliom は OCaml 用の Webプログラミングのライブラリです。 Ocsigen上で動作します。 OCaml の静的型付け…

findlibとMacOSX を使う時に通しておきたいパス?

Camlp4: Uncaught exception: DynLoader.Error ("/opt/local/lib/ocaml/site-lib/pcre/pcre.cma", "error loading shared library: dllpcre_stubs.so: dlopen(dllpcre_stubs.so, 138): image not found")と出た。 .bashrc に、 export DYLD_FALLBACK_LIBRARY…

PostgreSQL in MacOSX

いつも似たようなことをやっているのでいいかげんメモしておく。 (あとで追記するかも) サーバのインストール port install postgresql84 port install postgresql84-server mkdir /opt/local/var/db/postgresql84 chown postgres:postgres /opt/local/var/d…

Eliom/Ocsigen の XHTML型

EliomではXHTMLを表現する型でページを構成する.たとえば、 というタグは型 [>`Html ] XHTML.M.elt の値として扱う. このおかげで、Eliomが出力するXHTMLは必ずwell-formedかつ(ほぼ?)validだ. [>`Html ] XHTML.M.elt という型を見れば分かるように、 幽…

Eliomで入力値検査 (4) Eliom_parameters.regexp バグ?

以前 ここで書いた 電子メールアドレスを表現するリクエストパラメータの param_type で let email_string s = Eliom_parameters.regexp emailregex "$0" s と書くと、 なぜか 文字列 "ocsigen" が帰ってくる。 正規表現の $0 はマッチする文字列全体を指す…

Ocsigen/Eliomで開発中 - パラメータの山!

Eliomで、とある講義の受講申し込みアプリを作っている。こういうのにありがちだが、リクエストパラメータはすぐに増えてしまう。このパラメータの山はなんとかならないか。 フォームを作る関数 get_form や post_form は、パラメータの個数分ネストされた対…

Ocsigenでfindlibのパッケージをロード

例えばEliomでextlibを使う場合 <library findlib-package="extlib"/> とする。</library>

Eliomで入力値検査 (3) メールアドレスのチェック

よくある話、正規表現でメールアドレスっぽくない文字列を弾きたい. Eliom の, 正規表現で入力値を弾く param_type を生成する Eliom_parameters.regexp を使う OCamlには pcre-ocamlというPCREインタフェースがあるのでそれを使う. ソース (* どこかから…

Eliomで入力値検査 (2)

(Ocsigenは Webサーバーの名前なので フレームワークの名前 Eliom で呼ぶことにした) 昨日の記事で、 入力値バリデーションに失敗して元のページに戻るとテキストが消えてしまう問題 について書いた. 重要な機能が欠けている気がするのだが、こんなことでせ…

Ocsigen/EliomとPGOCamlを使ったサンプル

2年前に触ったときのソースをここに置いたのだった。 http://tsukimi.agusa.i.is.nagoya-u.ac.jp/~sydney/eliomsample.tar.gz しかしおそらく古すぎて動かないと思う。

Ocsigen/Eliomの入力値検査

Ocsigenで簡単なサンプルを書いた。 簡単すぎて悲しくなるけど、最初はこんなもんだろう。今週でこれをそこそこの規模に成長させる予定です。 足し算アプリ Struts にあるような入力値の検査機能(その業界ではバリデーションといいます)はOcsigenにはないの…

軽量言語のお手軽なWebプログラミングをHaskellで : Implicit Parameter を使って (未完)

与太話。 Haskell でもお手軽にWebアプリ書きたいんですが、 どうせならいま流行の軽量な感じに書けたら嬉しいのです。そしたら皆にも使ってもらえるよね。 型がうれしいHaskellで軽量にWebアプリが書けたらもう向かう所敵なしだと思う。 アイデア: リクエ…

OcsigenについてLTしました

オープンソースカンファレンス2009 Nagoya で OCaml の Webフレームワーク Ocsigen についてLTしてきました。 中身のあることは殆ど言ってませんがこちらにスライドを置きます:OCaml Webフレームワーク Ocsigen概説 @ OSC2009NagoyaView more documents fro…

Jakarta Commons Codec による Base64符号の末尾に改行が付加される件について

Amazon の Web API (Product Advertising API) が、最近 クエリーに署名を要求するようになったので、Javaで書かれた手元のアプリを修正した。 サンプルが与えられているのでまずはこれをコピペした。 http://docs.amazonwebservices.com/AWSECommerceServic…

Qtでハマったこと

C++

(8/17追記)この記事は間違っているような気がするので真に受けないで下さい。 手元で試しても再現しないし、 ソースを読むと QList::iterator::operator先日、某所のヘルプのため Qt (C++向けのクロスプラットフォームGUIツールキット)でほんの少しだけプロ…

メンテナンス中画面を出す本当に正しい作法?

メンテナンス中画面を出す正しい作法と.htaccessの書き方 | Web担当者Forum を見て設定してみたのだが、この通りにやると、 Apacheのエラーログに <<URL>>: RewriteRule: invalid HTTP response code for flag 'R'と出る。 コメント欄でも指摘されているね。 Rewr</url>…

Mac OS X における Ocsigenのインストール

OcsigenはOCamlのWebアプリケーションフレームワークです。 (2年前に触っていて記事も少し書いたのですが飽きてやめちゃいました。) Webアプリケーションの全てを型安全に構成できる素晴らしいこのフレームワークによる開発環境を Macで準備します。 とりあ…

Haskell+GADTで定理証明 その1: 型レベル自然数の等価性

実は、私のfull-sessionsというセッション型のライブラリは中で unsafeCoerce#を使っているので型安全でない。使ってくれる人にとってそれは心もとないだろうし、そもそもunsafeなんとかは、いけがみさんによればSPJとSimon Marlowしか使ってはいけないこと…

型変数の比較3 - 非等価性は矛盾する

TypeEq による型の非等価性判定は結果として矛盾することがある,というお話.型変数の比較で,引数の型が異なることを表現する関数を作ろうとして次のようなコードを書いたとする: typeEq' x y = type'eq x y :: HFalse ここでGHCのeagerなcontext reducti…

型変数の比較2

http://d.hatena.ne.jp/keigoi/20090709/1247155626 の続き.この話は無駄にUpdateとかの型レを使っていてややこしかったです.ここで紹介したコードを ghciでロードして,次を入力すればわかります: ghci> :t type'eq undefined undefined type'eq undefin…

Text.Printf, もっと安全なprintf

可変長引数のテクニックは普通に Text.Printfで使われてるんですね。 型レ以外ではHaskellをヘビーに触るわけではないので知りませんでした…型安全な printf (引数の過不足や型ミスマッチをチェックできる)については Olegさんの最近のポスト http://okmij.o…

型変数の比較

もっと簡単な例で追記しましたHaskellの型レでは型変数同士の比較ができないぜーというお話をしたんですが、OlegさんのReversing Haskell typechecker: converting from undefined to defined のTypeEqを試したらば、できちゃいました。Haskell型レのバイブ…

Haskell98可変長引数ハックにみる,各処理系のcontext reductionの違い

Olegさんの Generic polyvariadic printf in Haskell98 は、プレーンなHaskell98で可変長引数関数をつくり,printfを実現しています. 関数の型(a->r)は型構築子(->)と型引数a rからなる型 (->) a r なわけで,型クラスのインスタンスでうまいこと回せば、こ…