X10という言語
もしかしたら使うかもしれないので、X10という言語について調べてみた。
本家Webページは http://x10-lang.org/index.php にある。並列計算が書きやすいように工夫されたJavaといった感じ。
処理系はEclipseのプラグインであるX10DTを入れるのが簡便みたい。
最新バージョンであるX10DT 2.2.2.2のインストール方法は、 http://x10-lang.org/documentation/getting-started/x10dt-installation.html にあるとおり。自分はEclipse Update Managerを使ったインストールをした。
とりあえず、チュートリアルに載ってるサンプルを動かしてみる。
packageInfo not found for ...
Leksahがパッケージの情報を読んでくれなくなった。
具体的には、システムのモジュール一覧にほとんど何も表示されなくなったり、保管が効かなかったりする。
http://groups.google.com/group/leksah/browse_thread/thread/c2f7b51dacb19d14/76a1c94bdc8f6ac0?lnk=raot
に同じ症状の人がいるので、とりあえず、Leksahを再コンパイルしたけど、変わらず。
# haskell-updater --all
としてHaskellのパッケージ総て再インストールしても変わらず。
http://code.google.com/p/leksah/issues/detail?id=182 を参考にして
# ghc-pkg recache
をしても変わらず……
追記:
# ghc-pkg recache $ ghc-pkg recache --user
というようにrootとユーザで何度か再キャッシュしたら読めないパッケージが変わった
Haskellでグラフを書くには
使い方はそれぞれのサンプルから引用すると、
gnuplotの方は、
plotList [] (take 30 (let fibs = 0 : 1 : zipWith (+) fibs (tail fibs) in fibs)) plotListStyle [] (defaultStyle{plotType = CandleSticks}) (Plot2D.functionToGraph (linearScale 32 (0,2*pi::Double)) (\t - plotFunc [] (linearScale 1000 (-10,10)) sin plotFuncs [] (linearScale 1000 (-10,10)) [sin, cos] plotParamFuncs [] (linearScale 1000 (0,2*pi)) [\t -> (sin (2*t), cos t), \t -> (cos t, sin (2*t))] let xs = [-2,-1.8..2::Double] in plotMesh3d [] [] (do x <- xs; return (do y <- xs; return (x,y,cos(x*x+y*y))))
Chartの方は、
renderableToWindow (toRenderable $ plotLayout $ plot [0,0.1..10] sin "sin(x)") 640 480 plotWindow [0,1,3,4,8] [12,15,1,5,8] "o" "points" plotPDF "foo.pdf" [0,0.1..10] sin "- " cos ". " cos "o" plotPS "foo.ps" [0,0.1..10] (sin . exp) "- " (sin . exp) "o-"
と言う感じらしい。
……gnuplotの例の各行の式はそれぞれ型がIO ()で非常にわかりやすいのだけど、Chartの方の型は
Graphics.Rendering.Chart.Simple.PlotWindowType t => t
っていうように、型クラスのインスタンスになっているけど、そのままIO ()を要求される場所(つまりmain)に置けば動いた。そもそも、plotWindowなどは可変長引数をとっているように見えるけど、型が
forall a. PlotWindowType a => a
だし、よく分からない……
実装を見た感じだと、
[a] -> t1 -> IO () [a] -> t1 -> t2 -> IO () [a] -> t1 -> t2 -> t3 -> IO () [a] -> t1 -> t2 -> t3 -> t4 -> IO () --以下省略 {-ただし、aはNumのインスタンスで、t1, t2, ...はPlotArgのインスタンス-}
がPlotWindowTypeのインスタンスとなるよう定義されているみたい。
自動定理証明器用のoverlayを作ってみた
形式的仕様検証ツールあたりは、すでにfmportっていうのが存在するけれど、
E Proverなどのebuildは見つからなかったので、自作して公開することにした。
https://github.com/na4zagin3/proof-overlay
使い方
まず、/etc/layman/layman.cfgの
overlays : http://www.gentoo.org/proj/en/overlays/repositories.xml
ってなっている行を探して、
overlays : http://www.gentoo.org/proj/en/overlays/repositories.xml https://raw.github.com/na4zagin3/proof-overlay/master/overlay.xml
のように一行追加する。
そうしたら、
# layman -L | grep -e 'proof'
として、proofオーバーレイが認識されているされていることを確認した上で、
# layman -a proof
とすれば完了。