ベームベーム召還
javascript:(function(B){B.innerHTML=B.innerHTML.split(/[ァ-ー]+/).join('ベームベーム')})(document.body)
javascript:(function(B){B.innerHTML=B.innerHTML.split(/[ァ-ー]+/).join('ベームベーム')})(document.body)
Brandt Brauer Frick - Bop (via bigfatpete) なんだこれ
いろんなところで言いふらしてましたが、もう少しぐぐりやすいところにあった方がいいかなというのと、コンテキストをちょっと書いておいた方がいいだろうと思ったので、ここにも書いておきます。
毎年年の初めはなにがしかいい感じのことを書くのが我が家の習わしだ。
今年は確率 Monad を(Neighborhood of infinity で読んだのをうろ覚えながら)書いた。
*Main> runProb $ (+) <$> choose [1,2,3] <*> choose [1,2,3]
[(1 % 9,2),(2 % 9,3),(1 % 3,4),(2 % 9,5),(1 % 9,6)]
(>>=) は構文木を与えられたルールに従って接ぎはぎする操作だと考えることはおもしろい。
これを解いてみると楽しいと思う。
GHC-6.12 rc1 が出てから結構たつけど、結局 Snow Leopard の上で動くかどうかっていうのがよくわかってないので、もう少しちゃんと試した。(以前一瞬だけ試したことはあったがそのときは Unicode IO だけ試してすぐ消した)
今回は、GHC の trac にあるチケットを参考に「失敗すると書かれているテストが本当に失敗するのかどうか」を、GHC-6.12.1 rc1 を Snow Leopard にインストールして試してみた。失敗すると言われているテストは、主に動的ロード(Dynamic Loading)に関する物だ。具体的には、
についてのテストが失敗していると報告されている。(他にも ghci が生成するバイトコードがおかしいようだが、今回は無視する)
次に、テストをどうやって、手元で実行したかだが、testsuite をまるまる走らせるのもあほらしいし、僕個人としては何が今現在動かないか知れればよいので、TH、Annotation、FFI それぞれについて失敗すると言われているテストを 1 つずつピックアップし、適当に実行した。
手元で再現した失敗は以下の 2 つだ。
$ ls
./ ../ Annrun01_Help.hs annrun01.hs annrun01.stdout.txt
$ ghc --make annrun01.hs -package ghc
[1 of 2] Compiling Annrun01_Help ( Annrun01_Help.hs, Annrun01_Help.o )
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package array-0.3.0.0 ... linking ... done.
Loading package containers-0.3.0.0 ... linking ... done.
Loading package filepath-1.1.0.3 ... linking ... done.
Loading package old-locale-1.0.0.2 ... linking ... done.
Loading package old-time-1.0.0.3 ... linking ... done.
Loading package unix-2.4.0.0 ... linking ... done.
Loading package directory-1.0.1.0 ... linking ... done.
Loading package pretty-1.0.1.1 ... linking ... done.
Loading package process-1.0.1.2 ... linking ... done.
Loading package Cabal-1.8.0 ... linking ... done.
Loading package bytestring-0.9.1.5 ... linking ... done.
Loading package ghc-binary-0.5.0.2 ... linking ... done.
Loading package bin-package-db-0.0.0.0 ... linking ... done.
Loading package hpc-0.5.0.4 ... linking ... done.
Loading package template-haskell ... linking ... done.
Loading package ghc-6.12.0.20091010 ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
[2 of 2] Compiling Main ( annrun01.hs, annrun01.o )
Linking annrun01 ...
$ ./annrun01
Initializing Package Database
Segmentation fault
SEGV した。いや、コンパイルが通らないからっててきとうに Just cTop を Nothing に置き換えたせいかもしれないが、せめて例外を吐いてほしい。
$ ls
./ ../ ffi018_c.c ffi018_ghci.h ffi018_ghci.hs ffi018_ghci.stdout.txt
$ ghci ffi018_ghci.hs
GHCi, version 6.12.0.20091010: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
[1 of 1] Compiling Main ( ffi018_ghci.hs, interpreted )
During interactive linking, GHCi couldn't find the following symbol:
f
This may be due to you not asking GHCi to load extra object files,
archives or DLLs needed by your current session. Restart GHCi, specifying
the missing library using the -L/path/to/object/dir and -lmissinglibname
flags, or simply by naming the relevant files on the GHCi command line.
Alternatively, this link failure might indicate a bug in GHCi.
If you suspect the latter, please send a bug report to:
glasgow-haskell-bugs@haskell.org
>
foreign import した関数のシンボル解決ができないというエラー。
さっきまで、これが動かんあれが動かんばっかりいってたけど、やっぱり今回から入る Unicode IO は魅力的だ。そして、今回動かないことが確認できたものは、Annotation と FFI だ。1 ユーザとしては、FFI がおかしいのは困るけど(もちろん FFI 使いたくなったときもあるけど、ライブラリが FFI 使ってたりするときも)、Annotation は GHC 6.12.2 からでいいかなあ、あと ghci でおかしいようならちゃんとテストを書いてコンパイルして走らせるまでだし… という感想。自分で直すっていうのも無理だし。
Haskell Platform が 6.12.1 使い始めるまで 6.10.4 使っとけばいいかな。
Cabal と Hackage を布教するために先日 Live Coding で簡単なパッケージを作った。実は元ネタがあったんだけど見つからなくて困っててまあいいやってことにしてたんだけどさっき見つかった。
Haskell の Wikibook はあなどれない。ていうか Dons って vimmer だったのか。