将来課題

簡潔に記述したい。TemplateHaskellとかつかう? レコードに型変数持たせて多相にしたい Maybeを意識しないといけない箇所を減らしたい(Control.Lens.Prismをつかえば良いらしい?) Object型以外の型にも特異メソッドを追加できる型をいろいろ作りたい(Objec…

試み

https://github.com/nushio3/practice/tree/master/duck {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE Rank2Types #-} {-# LANGUAGE TypeFamilies #-} module Data.Object wh…

Haskellで特異メソッド

(この記事はHaskell Advent Calendar 2012の記事です。)HaskellでReal World Problemを解いていると、オブジェクト指向でいうところのオブジェクトを作りたくなることはよくあります。Haskellでは、だいたい代数データ型とレコード構文がその役割を担って…

cabal大掃除

いろんなことがあった今年ももうすぐ終わりです。みなさんのcabalにもこの一年の勉強、チャレンジの成果が積もっているのではないでしょうか。反面、衝突を起こして新しいパッケージが入れられず壊れたままになってしまっているかもしれませんね。折しもマヤ…

自動微分なるものをしてみんとてするなり

http://ja.pk.paraiso-lang.org/Hackage/ad/mainそうこうするうちに http://hackage.haskell.org/package/dvda なんてのも視界に入ってきたからこっちも試さんとなー

激しき闘いに毀れし刃は今くろがねに生まれ変らん

(愛用していたKinesisのチャタリングが酷くなってきたので黒いのを買ってみた。正直強く叩きすぎた。今度は大事に使おう)

はじめてのFPGAプログラミング

「価格性能比と消費電力効率を極限まで追求した超並列計算機システムの実用化に関する研究」第一回シンポジウムというのに行って、JavaRockという言語でFPGAプログラミングを学び、Pongみたいなゲームを作ってきました。ソース: https://github.com/nushio3/…

Paraisoでシミュレーションを始める

シミュレーションを始めるには、まず初期条件を設定できる必要があります。初期条件の場を計算する仕事は、Paraiso式づくりのとっかかりとしても優れています。やってみましょう。サンプルを見てください。 table :: Named (StaticValue TArray Double) tabl…

人生っていいもんだ

Paraisoを実用的な問題で試してみましょう。そうですね、生命現象のシミュレーションなどが実用的で良いのではないでしょうか。さっそくサンプルプログラムを見ていきましょう。まずはインポートです。 #!/usr/bin/env runhaskell {-# LANGUAGE NoImplicitPr…

Paraisoの境界条件

直胞機械のshift命令は配列変数全体を平行移動する命令です。実際のコードが扱う配列変数は常に有限サイズですから、平行移動によりはみ出す部分の処理を境界条件により指定してやる必要があります。Paraisoは、データフローグラフの中のshift命令を解析して…

Builderモナド

Paraisoのプログラムは、Builderモナドを組み合わせることで記述します。Builderモナドは、実のところ作りかけのデータフローグラフを状態にもつStateモナドです。それぞれのBuilderモナドは、データフローグラフの頂点をいくつか引数に取って、新たな頂点を…

せきじいのサイト

先輩の関口さんがサイトを作ったらしいが検索にでてこないらしい。どうしたのだろう。 http://sites.google.com/site/yisekig/ などと、google juiceを与えてみるテスト。

はじめてのGPUプログラミング

それでは、いよいよGPUプログラミングをやってみましょう。C++コードの生成器をCUDA用のもの.に書き換えるのは、実際すごく簡単です。 $ diff HelloWorld/Generator.hs HelloGPU/Generator.hs 40c40,42 < { Native.directory = "./dist/" --- > { Native.dir…

NGS現場の会 第二回研究会に行ってきた。

Paraisoが生成するC++コードのAPI

今回はParaisoが生成するコードの使い方を見ていきます。HelloWorldフォルダでGenerator.hsを実行すると、distというフォルダが作られてその下にC++のヘッダやソースが生成されているはずです。まずはヘッダを見てください。 class TableMaker{ private: std…

はじめてのParaisoプログラミング

Paraisoは、一様メッシュ上での偏微分方程式の陽解法という分野に特化し、その分野の計算を、直胞機械(OrthotopeMachineの訳語、今決めた)と呼ばれる仮想機械のプログラムとして表します。直胞機械は、配列変数とその操作を表現する仮想機械であり、解きたい…

Paraisoで始める数値流体力学

Paraisoの論文がAcceptしました。確かにこれで、偏微分方程式の解法を記述する数式を処理し、並列仮想マシンを経てCPU/GPU向けのコードを生成し、さらに遺伝的アルゴリズムで自動チューンするまでを一つのシステムとして実証するという一歩を進めることがで…

脱・星座もわからない天文学者

を目指して、銀河白地図をプロットするスクリプトを書いた。 スクリプト本体のチェックアウトはこちら。 生成されるepsファイルも。 こんな感じに仕上がります。

Scrap Your Boilerplate ことはじめ2

昨日のやつのモナド版を作ってみます。 recMapM :: forall a b m. (Data a, Data b, Monad m) => (b -> m b) -> a -> m a recMapM f x = do let recurse = gmapM (recMapM f) x case cast x of Nothing -> recurse Just bx -> do z <- f bx case cast z of N…

Scrap Your Boilerplate ことはじめ

折角ですから、Haskellで新年の挨拶をしてみましょう。以下のコードをMain.hsといったファイル名で保存し、ghciから読み込んでみてください。 {-# LANGUAGE DeriveDataTypeable, RankNTypes#-} {-# OPTIONS -Wall #-} import Data.Data import Data.Maybe(ma…

Simon Peyton-JonesがPFIにやってくる!

http://www.ustream.tv/recorded/17411671 (本編は31:46頃から) Simon先生が「そっちの話も何か聞かせてよ」というので不束ながら前座をつとめさせていただくことに。サイモンさんはすごく気さくで何事にも前向きな人(あの台風でも却ってはしゃいでいた位…

Paraiso 0.1.0.0公開

あの日胸に抱いたのは、ささやかな希望と憧れ。訪れたのは、速すぎるコードと尽きせぬ課題。 http://hackage.haskell.org/package/Paraiso-0.1.0.0 うごごご・・・以前はただ文字列の結合でコードを生成していたバックエンドまわりを大幅に強化し、データフ…

ParaisoにDead Code Eliminationを実装

劇的ビフォー/アフターほんとはHoopl使いたいんだお・・・ でも今の俺じゃ歯が立たないお・・・ だからまずは基本的な最適化を自前で実装するお!!!renumberのところがちょっとApplicative使って綺麗に書けたのはうれしかった newNodes = catMaybes $ fma…

ICFPC2011 マルチスレッド版LTGモナド

未だにICFP programming contest 2011の余韻から抜け出せないでいます。打ち上げでもいろんなプログラマーやジャッジ側と交流ができて楽しかったです。さて、その打ち上げ当時から「1ターンで殺してゾンビ化して次弾Getまで出来るよね」「それで浮いたター…

ICFPC2011 参加記録

ICFPコンテスト2011に参加してきました。近年は予定がかぶったりでまともに参加できていませんでしたが、今回は久々にちゃんと参加できました。実は遠隔でなく泊まり込みで参加するのは初めての体験です。ひとまず実装や作戦の詳細に関してはチームのページ …

流体力学 on Paraiso が かんせいした!

クリックすると動画に飛びます見よ!流体力学ソルバーのParaiso実装を! cell2 <- proceedSingle 1 (dt/2) dR cell cell -- まず時間1次精度でdt/2だけ進めておいて、 cell3 <- proceedSingle 2 dt dR cell2 cell -- それを使ってもとの量をdtだけ進める。 …

Arch Linux

継ぎ目すら無い美しいローリングアップデートで評判のArch Linuxを主力採用してみようかと思うが、アーチの本ってなんかあるんだろうか。ぱっと見つかったのは Arch Linux Handbook 2.0: A Simple, Lightweight Handbook作者: Dusty Phillips出版社/メーカー…

Paraisoうごきはじめた

Paraisoでとにかく何か動いているように見えるものが生成できるようになりました。 https://github.com/nushio3/Paraiso/遊び方はREADMEに書いてあります。ライフゲームのルールを記述したソースはこれで、本質的なとこだけ抜き出すと adjVecs :: [Vec2 Int]…

それは、数値計算の概念を変えてしまうような出会い。それは、新たなるプログラミング言語の始まり。

Data.Traversable

みなさんいかがお過ごしでしょうか。きれいな象さん本が出た昨今、皆様におかれましても急速にHaskell熱が高まっておられるものと思います。え?高まってない?KY*1 さて、象さん本を読んだことで僕もFunctor, Applicative, Monoid, Monadといった型クラスが…

Dvorak配列の左右入れ替えたら日本語入力しやすくなった

(この記事はDvorak Advent Calendarの一環として書かれました) いきなりですが、僕はキーボードをこんな配列で使っています。 そう、kinesisです。101キーボードに焼き直すとこんな感じだと思います。 RAKDAO配列 という名前をつけています。まあ自分専用…

ghcのwarningについて

Haskell Advent Calendarに拙文を書いたことで、いけがみさん, やまもとさんなどから教えてもらったので、ghcのwarningについて調べてみました。まず、warningの一覧はghcのドキュメントの中にあって、和訳も整備されています。フラグ早見表というのもありま…

加速しなイカ?

Chapter 1. Motivations あれは、今から86万4000秒前の出来事だったか・・・ xxxx様 新規利用申請を承認しました。 アカウント名は 10IKA101 です。(つд⊂)ゴシゴシ→(;゚ Д゚) …!? 10IKA101神は言っている・・・ Functional Ikamusume Advent Calendarに参加…

arXivをラジオニュース風に読み上げてくれるソフト

研究者は大変です。世界で戦っていくにはぜひとも毎日 今日出た論文のチェック 英語 この2つののトレーニングが欠かせません、これ結構時間くってしまいますよね・・・そこで、この2つが同時に、しかもながら勉強でできてしまうという超画期的なライフハッ…

Haskell入門者*1のデバッグ3つ道具

(この記事はHaskell Advent Calendar jp 2010のために書かれました) 要旨 絶対にバグが出ない言語などというものは 無く、理不尽な挙動を前にして 途方にくれる時もある。 それを乗り越える為には、確固 たる信念と洞察、そして (1)deriving Show (2)print (…

cprb -- Ruby風Cプリプロセッサ

C++や、それ風の言語で書いていると徒労感に襲われる時ってありませんか。マクロはほとんど使用禁止みたいなもんだし、そもそも文字列を繋ぐ程度の能力しかありません。テンプレートはコンテナとか作ってるぶんにはいいのですが、少々凝ったことをしだすと関…

Haskell 超巨大実数ライブラリ

やけくそにでかい実数を適当な精度で扱えるライブラリを作ってみた。 きっかけは小数小野小町算のツイート。うん、屁理屈なんだ、すまない。 でもどんくらいでっかい数がでてくるものか、興味があったんだ。バグとかあったら教えてください。 追記:案の定バ…

はやぶさ記念写真

はやぶさの地球帰還の興奮さめやらぬ昨今ですがいかがお過ごしでしょうか。6月13日はオンラインで各種生中継が行われ翌日の朝刊はどこも1面記事ではやぶさの帰還を報じていました。生中継は大興奮でしたし、テレビや新聞の高解像度で転送された動画・写…

Haskellで開発しているオープンソースコミュニティー

ってあります? Haskellでテスト駆動開発とかどうやるんだろ。C++でいうgoogletestみたいなのってあるのかな。思いついて、darcsのレポジトリを覗いてみたが・・・http://allmydata.org/trac/darcs-2/browser/testsシェルスクリプトがいっぱいある。テスト自…

Haskellで型クラスを同一のリストに突っ込む

Haskellで、同じ型クラスだけど違う型のオブジェクトを、一つのリストとかにツッコんでその型クラスの関数に関してはmapとかできるようにしたいというのは、よくある願いだと思う。ていうかMonadiusつくった時にはそうする方法を知らんかったので仕方なく型…

c++のstd::ifstreamとかってなんでstringを引数にとってコンストラクトできないの?

c++の標準ライブラリって、結構考えて作ってあるから、もし理由があるなら知りたいんですが。 ファイル名などの文字列を扱うには、char*よりstringの方が便利ですから、 ifstreamにファイル名指定する時にも、stringが直接渡せればいいと思うのですけれども。…

長崎も始まっています!!

看板をかけたらしい http://www.nagasaki-u.ac.jp/info/p_release/2010/20100507a.pdfニュースになっている http://www.nagasaki-np.co.jp/kiji/20100511/09.shtmlそしてマキーノ先生がフォローしている http://www.artcompsci.org/~makino/journal/journal-…

白眉の平成22年度分の公募が始まっています!!

http://www.kyoto-u.ac.jp/ja/news_data/h/h1/news5/2010/100423_2.htm5月中旬から京都・仙台・東京・名古屋・福岡などで説明会があります。 興味のある方、俺は5年間じっくり難題に取り組みたい(が社会がそれを許してはくれない)んだーという方は、ぜひ…

プレイナーヘキサキューブをつくった

プレイナーヘキサキューブとは、6つの立方体を平面上で繋ぎ合わせてできる立体のこと。別の言い方をすると厚みが1のヘクソミノ。全部で35通りある。ジャグラー小田原の箱詰めパズル天国というサイトの記事で、美しい立体問題や、あまつさえ未解決問題が…

パズル的な問題に関する疑問

いま、こういう問題にぶつかっている。1マスが1cmの方眼紙があったとして、そのマスをいくつか塗って作られた図形があるとする。で、それを幅1cmのテープで重複無く、すきまなく覆いたいとする。テープは1ロールあって、長さは十分、で、1cmの倍数のところ…

助教になりました

ですのでこういう研究をしようと思います研究計画書 pdf研究計画書 english pdf内定式トーク pdf上述のように、この研究がうまくいくと、将来的には、シミュレーションコードを直接人間が書くのはださいということになり、シミュレートしたい方程式をもとに…

白眉採用者内定式&研究計画発表会にいってきた

みんなの研究計画がとても野心的なので紹介したいのだが、研究計画発表会で使ったスライドとかはまだうpされてないっぽい。もしかしたら、特許等からみで公開するとまずい研究をしている人もいるかもね。 そこでそういう事情に配慮して正確なところがわから…

ニュートン買ってきたら

脳特集以外のトピックが赤外線天文学と系外惑星のハビタブルゾーンと地球磁気圏(オーロラ)とかだったので俺得、いやむしろ全俺が泣いた 脳特集ですが、チャネルロドプシンとかいうのを遺伝子工学により神経細胞に追加すると、ふつうの光で、高い空間分解能…

GCOE「普遍性と創発性から紡ぐ次世代物理学」2009年度全体シンポジウム参加日記

これに行ってきました http://www2.yukawa.kyoto-u.ac.jp/~gcoesymp/2009/index.ja.htmlいろいろあったのですが、端的に言うと物理はフロンティアが狭まりつつある・・・そんな風に考えていた時期が私にもありました、という感想。フロンティアはじつは前進…

白眉プロジェクト内定

http://www.kyoto-u.ac.jp/ja/news_data/h/h1/news7/2009/100127_2.htm改めまして。来年度より助教として研究にいそしみます。皆様これからも、いろいろ教えてください。よろしくお願いします!