haskell

haskellでちょっとした処理のメモ

久しぶりにhaskellを触ったので、その際に調べたtips的な処理についてメモ リストのslice https://stackoverflow.com/questions/4597820/does-haskell-have-list-slices-i-e-python slice :: Int -> Int -> [a] -> [a] slice from to xs = take (to - from +…

nix環境でhaskellのprojectをビルド

久しぶりにhaskellを触った際によくわからなくなって調べたのでメモ とりあえずビルドしたいときのチートシート的にまとめておく 基本的にこちらに書いてある通り Getting Started Haskell Project with Nix | MaybeVoid nixはinstall済みだったが一応 ghcと…

yampaのpSwitch

yampaについて調べていると単純なswitchについての説明はいくつか見つかるのだが、pSwitchについてはなかなか見つからなかったのでわかったことをメモしておく。 こちらのブログとhaskanoidのソースコードを参考にした。 http://bitterharvest.hatenablog.co…

numberLinkのsolverをhaskellで作ってみた

以前ハッカソンでnumberLinkのsolverを書いたことがあったが、ちょうどアルゴリズムの勉強がてらC++を勉強中だったので、そのときはC++で書いた。完全に手続き的な書き方だが。今回それを読みなおしてhaskellで書きなおしたので全体の概要やアルゴリズムにつ…

parallel and concurrentのまとめ

今年に入ってからParallel and Concurrent Programing in Haskellを読みつつその内容をブログに書いてきたが、一段落したのでまとめ。まず英語でよいならこちらのページですべて読める。 http://chimera.labs.oreilly.com/books/1230000000929/index.html本…

distributed-proccessのexecise(Parallel and Concurrent Programming in Haskell Chapter 14)

第14章の最後の部分はexeciseという位置づけになっている。ヒントが示されているのでそれに従って実装してみた。英語の原文はこちらのページで読める http://chimera.labs.oreilly.com/books/1230000000929/ch14.html章の前半についてまとめたものはこちら d…

distributed-process - 分散処理(Parallel and Concurrent Programming in Haskell Chapter 14)

distributed-process - 分散処理(Parallel and Concurrent Programming in Haskell Chapter 14)英語の原文はこちらのページで読める http://chimera.labs.oreilly.com/books/1230000000929/ch14.html前の章についてまとめたものはこちら http://jsapachehtm…

DiedUnknownId - distributed-processのデバッグ

parallel and concurrent haskellの14章を読んでいてtyped channelを用いた実装をやってみた際、なかなかデバッグできず苦労したのでメモ。まず私の環境では以下のようにmoduleを分けて実装していた。 Channel.hs module Channel where data Message = Ping …

スレッドによる並列プログラミング(Parallel and Concurrent Programming in Haskell Chapter 13)

英語の原文はこちらのページで読める http://chimera.labs.oreilly.com/books/1230000000929/ch13.htmlこのページで紹介しているコードはほとんど上記ページからの引用。 これまで並行処理で用いてきたスレッドを使って並列処理を行うという話。本の前半で扱…

subfindの実装(Parallel and Concurrent Programming in Haskell Chapter 13の一部)

parallel and concurrentの13章でとてもわかりづらいところがあったのでメモ英語の原文はこちらのページで読める http://chimera.labs.oreilly.com/books/1230000000929/ch13.html#conc-par_00000029 今回調べたのは以下のコード(本から引用) subfind :: Str…

チャットサーバ(Parallel and Concurrent Programming in Haskell Chapter 12後半)

英語の原文はこちらのページで読める http://chimera.labs.oreilly.com/books/1230000000929/ch12.html#sec_chatこのページで紹介しているコードはほとんど上記ページからの引用。 入力された値を数倍して返すというシンプルなサーバを元にチャットサーバを…

簡易的な並行ネットワークサーバ(Parallel and Concurrent Programming in Haskell Chapter 12前半)

英語の原文はこちらのページで読める http://chimera.labs.oreilly.com/books/1230000000929/ch12.htmlこのページで紹介しているコードはほとんど上記ページからの引用である。 これまで章で出てきた要素を使ってサーバアプリケーションを作成するサーバ型の…

並列処理の抽象化(Parallel and Concurrent Programming in Haskell Chapter 11)

英語の原文はこちらのページで読める http://chimera.labs.oreilly.com/books/1230000000929/ch11.htmlこのページで紹介しているコードはほとんど上記ページからの引用である。第11章ではこれまでの章に学んだ並行処理の要素を使いやすい形にまとめる。 1…

STM (Parallel and Concurrent Programming in Haskell Chapter 10)

英語の原文はこちらのページで読める http://chimera.labs.oreilly.com/books/1230000000929/ch10.html前の章についてまとめたものはこちら http://jsapachehtml.hatenablog.com/entry/2015/02/28/085123STMは各処理をひとまとまりのアトミックな処理として…

並行処理のキャンセル (Parallel and Concurrent Programming in Haskell Chapter 9)

第9章では引き続き非同期処理について英語の原文はこちらのページで読める http://chimera.labs.oreilly.com/books/1230000000929/ch09.html 処理のキャンセルや時間待ちの処理が入ることはよくあるし対処しなければならない問題^Cで実行をキャンセルしたと…

haskellでの例外について(Parallel and Concurrent Programming in Haskell Chapter 8)

例外について(Parallel and Concurrent Programming in Haskell Chapter 8)英語の原文はこちらのページで読める http://chimera.labs.oreilly.com/books/1230000000929/ch08.html#sec_exceptions前後に非同期処理の話があるがそれは別にまとめることにするh…

RSAアルゴリズムを並列化(Parallel and Concurrent Programming in Haskell Chapter 3 and 4 example)

以前まとめた第3章、第4章についてはこちら http://jsapachehtml.hatenablog.com/entry/2015/01/24/131408 http://jsapachehtml.hatenablog.com/entry/2015/01/31/221609英語の原文はこちらのページで読める http://chimera.labs.oreilly.com/books/1230000…

Par Monad(Parallel and Concurrent Programming in Haskell Chapter 4)

以前まとめた第3章についてはこちら http://jsapachehtml.hatenablog.com/entry/2015/01/24/131408英語の原文はこちらのページで読める http://chimera.labs.oreilly.com/books/1230000000929/ch04.html 第2章、第3章ではEvalモナドを使い 遅延評価と密接…

Strategies(Parallel and Concurrent Programming in Haskell Chapter 3 前半)

以前まとめた第2章についてはこちら http://jsapachehtml.hatenablog.com/entry/2015/01/03/101754 http://jsapachehtml.hatenablog.com/entry/2015/01/18/143520英語の原文はこちらのページで読める http://chimera.labs.oreilly.com/books/1230000000929/…

Eval monadと並列実行(Parallel and Concurrent Programming in Haskell Chapter 2)

こちらの記事のつづき http://jsapachehtml.hatenablog.com/entry/2015/01/03/101754もともとの本の内容はこちらで読める http://chimera.labs.oreilly.com/books/1230000000929/ch02.html また、このページのコードは↑から引用した コードの全体は著者が公…

遅延評価とWHNF(Parallel and Concurrent Programming in Haskell Chapter 2前半まとめ)

Parallel and Concurrent Programming in Haskell という本を以前読書会で読んだが、当時はあまり理解できなかった部分もあったのでもう一度読んでサンプルコードなど書いてみようと思い立った。この本はわかりやすいし並列並行プログラミングに関して必要な…

Error detected while processing function ghcmod#util#check_version

ghc-mod.vimでエラーが出た 具体的にはghc-modを5.2.1にupdateしたら.hsファイルを開いたときにエラーが出るようになった 文法エラーを表示する機能には影響していないようなのでほっておいてもいいが、起動時に毎回出るのは面倒なので調べてみた ちなみにgh…

すごいhaskell本の練習問題(knightの動き)

すごいhaskell本の13章にあるチェスのknightの動きを求める練習問題を解いてみたのでメモ初期位置と目的位置、移動回数を指定して 移動できるならその経路をリストとして出力するようにした最終的なコードはこんな感じ import Control.Monad type Pos = (Int…

haskellでハマったところ

haskellを使っていてハマったところについてメモしておく データ構築子のexport, import 下のコードの場合、型構築子はexportされるが、データ構築子はexportされない。なので別のモジュールにて型名としてのFugaが使われているからといってFugaをデータとし…

haskellで非同期IO処理(Parallel and Concurrent Programming in Haskellの11章中盤)

勉強会の復習としてParallel and Concurrent Programming in Haskellの11章をまとめてみる(中盤の辺りについて) 前半についてはこちらに書いた http://jsapachehtml.hatenablog.com/entry/2014/04/03/23310111章初めの部分でwithAsyncという関数を作った。…

haskellで非同期IO処理(Parallel and Concurrent Programming in Haskellの11章はじめ部分)

Parallel and Concurrent Programming in Haskellの読書会でasyncを使った並行処理について学んだので復習がてらメモ 本の内容はこちら(今回の内容は第11章の前半について) http://chimera.labs.oreilly.com/books/1230000000929/index.htmlなお、ブログ中…

入力をIntのリストに変換する

初歩的な部分だけど自分なりに勉強になったのでメモしとく以下のような入力ファイルがあるとする sample.dat 1 2 3で、このファイルからの入力を[Int]としたいとすると以下のように書ける sample.hs main = do s <- getLine let ss = words s let ns = map r…