Haskell

HaskellでGPUプログラミングしてみた

repa触ってみたらGPUも触ってみたくなったので触りました。 ライフゲームを略。 次の時刻の盤面を計算する部分です。ドキュメントやサンプルを見ると、どうやらstencilを使うと良いようです。 step :: Board -> Acc Board step arr = Acc.stencil stencil2D …

高速並列演算多次元多相配列repaを使ってみる。

Haskellのライブラリで前から気になっていたrepaを触ってみます。高速並列演算多次元多相配列ですからね。それは気になります。regular pallalelの「regular」の意味がいまいち分かりませんが。 丁度@shelarcyさん記事が書かれたことをきっかけとしています…

続・Template Haskell入門 -- QuasiQuotes編

先にこちらをどうぞ。Template Haskell入門 - think and error QuasiQuotesで簡単なものを作りましょう。 ここではヒアドキュメントを作ろうと思います。Haskellにはヒアドキュメントがないですから。 参考: こんさんのあれ:準クォートでもてかわゆるふわメ…

Haskellの関数合成でひっかかってたこと

関数合成てのは f(g(x))こんなやつです。でもたまには次のようにやりたくなるわけですね。 h(x,y) = f(g(x,y)) Haskellでの関数合成は(.)です。これで上記をやろうとします。 -- 1引数関数 f x = x + 2 -- 2引数関数 g x y = x * y -- fとgを合成しようとす…

HaskellでBTree書いてQuickCheckでテストしてみた

Haskellが得意なことのひとつに木構造の操作がありますね。 ということでBTree書いてみました。 初め二分木書こうと思っていたんだけど、あまりにも簡単すぎたのでB木に変更。 そしたら思ったより難しくなってしまい。 参考:http://pfp7.cc.yamaguchi-u.ac.…

リテラルが多相的であること、もしくは値コンストラクタの要らないデータ構造

本を適当に開いて読んでみるということをたまにする。 Real World Haskell(RWH)のデータ構造の章。 ghci> 3 * 2 + 4 10 ghci> prettyShow $ 3 * 2 + 4 "3 * 2 + 4" こんな感じのものが書いてあった訳だ。 僕には何が起こっているか全然分からなくて、一体ど…

Enumでシーザー暗号、もしくは既知の型のインスタンス一部変更

Enumクラスのメソッドsucc, pred使うとシーザー暗号簡単に書けそうですよね。 succはsuccessorの略で、次に続く値を返してくれます。 数値の場合はインクリメントした値を返します。 predはpredesessorですね。数値ではデクリメントした値を返します。 caesa…

Template Haskell入門

Template Haskell(以下TH)超入門です。 まあ入門するのは僕ですが。 Haskellの易しいエントリがあまり見あたらないため、僕が書いていくことにしようとか考えたり。 続き よかったらこちらもどうぞ。 続・Template Haskell入門 -- QuasiQuotes編 - think and…

Haskellの壁

この記事はHaskell Advent Calendarのために書いたものです。 先ずは自己紹介でも。 大学の専門は機械でした。制御システム工学。まあ情報(工学|科学)科ではないということです。仕事で使っている言語はPHP。実用主義的な言語ですね。Haskellとは正反対です…

Haskell基礎文法最速マスター

見ていただけるのは嬉しいですがこのエントリは十分古いため、新しい情報へアクセスをしてください。以下の本をお勧めします。 すごいHaskellたのしく学ぼう!作者: MiranLipovaca出版社/メーカー: オーム社発売日: 2017/07/14メディア: Kindle…