サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
パリ五輪
nebuta.hatenablog.com
Scala.jsの概要 Scala.js http://www.scala-js.org/ という、ScalaからJavaScriptのコードを生成できるシステムがあり、ちょっといじって見ているが、かなり良く出来ているという印象を持った。IntelliJの補完も使って、型安全+Scalaの抽象化能力を最大限に活用できる。 http://tototoshi.github.io/slides/sendagaya-js-scala-js/#1 このスライドで書かれているように、初出は去年なのだが、進歩が猛烈なスピード。現在ver. 0.5.1。この調子で行けば、じきに高機能AltJSの代表格となるのではないだろうか。 使ってみて感じたメリット。 Scalaの言語仕様のほぼ全機能(リフレクション以外)を使える。 型安全で、Scalaのパワフルな抽象化が使える。JSのオブジェクトも型付けできる。 当
前のポストでGADTを使って型付きの抽象構文木(AST)を表現する方法について書いたが、ここではそのASTから他の言語のコード生成する方法について調査・検討した結果を記す。@keigoiさんの記事(http://d.hatena.ne.jp/keigoi/20111206/haskell_tagless_dsl)に触発され、一部借用したものである。なお、今回のコード生成の方法論はASTの型付き・型なしの区別にかかわらず使える。 MatlabのDSL in Haskell 今回例として扱うのは、Matlab(行列計算言語・統合環境)の行列計算を表現するようなDSL。最小構成として、2次元行列の加減乗算と要素の取り出しを表現したい。(Matlabの文法の簡単な説明はこれなどを参照。 http://www.math.meiji.ac.jp/~mk/labo/text/matlab/node4.h
MIT Halide(http://halide-lang.org/)というC++の高速画像処理ライブラリが去年リリースされた。C++内のDSLを使っていて、画像処理を、 計算のアルゴリズム アルゴリズム自体は副作用がなく、純粋関数的に定義される。 実装の詳細(「スケジュール」) スケジュールは、計算の並列化と、複数の計算ステップの融合を最適化する方法を指定する。 を分離した形で簡潔に書ける。 凄いのは、抽象的に書いたアルゴリズムからライブラリによって低レベルコードを出力させたほうが、手書きでチューニングしたコードよりも速いことすらあること(という作者の主張)。たとえば最近開発されたlocal Laplacian filterというの複雑なアルゴリズム(http://people.csail.mit.edu/sparis/publi/2011/siggraph/、pixelwise ope
GADTについて、この解説が分かりやすい(英語)。 http://en.wikibooks.org/wiki/Haskell/GADT 背景 Haskell(というか関数型言語一般)の素晴らしい機能の一つ、代数的データ型を使うと、抽象構文木(AST)をHaskellの枠組みの中で表現できる。 例えば、整数の足し算・引き算ならば、 data Exp = Const Int | Add Exp Exp | Subtract Exp Exp さらにこのASTを数値一般に使いたいので型パラメータrをつけて多相にしてみる。 data Exp r = Const r | Add (Exp r) (Exp r) | Subtract (Exp r) (Exp r) これを使えば、例えば(3 + 4) - 2という数式は、Subtract (Add (Const 3) (Const 4)) (Const
Haskellで画像データを扱う際に、いろいろな手法がありうる。 Pure Haskell Hackageを見てみると、(denseな)行列を扱うpure Haskellの(=外部ライブラリに依存しない)ライブラリで有名なのは、これだろうか。並列化が自動でできるというのが売りのようだ。Simon Peyton JonesもYouTubeに載っている講演で紹介していたと思う。 Repa http://new-hackage.haskell.org/package/repa shelarcyさんによる解説 http://itpro.nikkeibp.co.jp/article/COLUMN/20120605/400424/ ただ、速度は遅く、ちょっと実用には辛いレベルかと思われる。 http://repa.ouroborus.net/wiki/Examples/Fft2dHighpass やは
このページを最初にブックマークしてみませんか?
『nebuta.hatenablog.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く