Skip to content

Instantly share code, notes, and snippets.

@znd-milktea
znd-milktea / failure.txt
Last active November 21, 2016 15:52
20161122.stack-glib-build
Version 1.2.0, Git revision 123819b7d65df2ad7fe63fb5eb39a98536acb5f3 (4055 commits) x86_64 hpack-0.14.0
2016-11-17 22:07:54.840949: [debug] Checking for project config at: C:\Users\foo\Documents\Files\Haskell\gtktest\stack.yaml
@(Stack\Config.hs:792:9)
2016-11-17 22:07:54.841949: [debug] Loading project config file stack.yaml
@(Stack\Config.hs:810:13)
2016-11-17 22:07:54.856950: [debug] Trying to decode C:\sr\build-plan-cache\x86_64-windows\lts-7.9.cache
@(Data\Store\VersionTagged.hs:68:5)
2016-11-17 22:07:54.874951: [debug] Success decoding C:\sr\build-plan-cache\x86_64-windows\lts-7.9.cache
@(Data\Store\VersionTagged.hs:72:13)
2016-11-17 22:07:54.880951: [debug] Getting system compiler version

すごいHaskell読書会 in 大阪 2週目 #18 第15章「Zipper」 EXTRA STAGE

そういえば先程、

※あれ、:-で連鎖って、なんだか>>=っぽいですよね…?

とか言ってました。
実際に>>=に置き換わったのはMaybeが出てきてからですが、それ以前でも-:と>>=の類似性は気になるところです。

Zipperの多くの関数は概ね

すごいHaskell読書会 in 大阪 2週目 #18 第15章「Zipper」

この章の概要

この章では、木構造のデータ型を操作する例として、Zipperを紹介しています。

Zipperが解決する問題は、木構造のデータ型の要素を効率よく参照、更新することです。 特に、近接する複数の要素に対する操作について、より効果を発揮します。

序文の説明は、Haskellが参照透明性をもつために生じる話です。

すごいHaskell読書会 in 大阪 2週目 #16 第14章「もうちょっとだけモナド」

この章の概要

この章では、モナドの具体例として、いくつかのMonadクラスのインスタンスを扱います。
この章で紹介されるモナドの利用方法は、世の中に数多く存在するモナドライブラリの基本となります。

本文では

  • xx型
  • xx型のMonadクラスのインスタンス定義(returnと>>=演算子の定義)

Attoparsecで簡単パージング


自己紹介

  • Fujiyan(@fujiyan18)
  • Haskell始めて1年半です。
  • 「すごいHaskell読書会 in 大阪 2週目」で勉強中です。
  • 今日の資料、スライドに落とせませんでした…。
data Warrior = Warrior {attack :: Int}
data Monster = Monster {hitPoint :: Int, defence :: Int}
data Attack = Normal | Critical | Gira | Begirama
battle :: Warrior -> Monster -> [Attack] -> Int
battle w m as = (hitPoint m) - (sum $ map damage as)
where
damage Normal

#超簡易ドラクエ戦闘シミュレータ

##内容 勇者(Warrior)は、属性値として「攻撃力(attack)」を持ちます。 モンスター(Monster)は、属性値として「HP(hitPoint)」「守備力(defence)」を持ちます。

勇者の攻撃(Attack)の種類として「攻撃(Normal)」「会心の一撃(Critical)」「ギラ(Gira)」「ベギラマ(Begirama)」があります。 各攻撃について、モンスターに与えるダメージ(damage)は下記の通りです。

  • 攻撃 = (勇者の攻撃力 - (モンスターの守備力 / 2)) / 2 ※但し結果が1未満になる場合は1

すごいHaskell読書会 in 大阪 2週目 #4 第5章「高階関数」

##この章の概要

この章では、「高階関数」を扱います。

高階関数とは、関数を引数/戻り値として扱う関数です。
但し、「高階関数」と特別な呼び方をするものの、関数をファーストクラスオブジェクトとして扱う言語からすれば、通常の関数と何ら変わりはありません。

高階関数のおかげで、カリー化や部分適用をHaskellで扱うことができます。

すごいHaskell読書会 in 大阪 2週目 #3 第4章「Hello 再帰!」延長戦

##再帰で本当に大丈夫?

Haskellは、ループ処理を「言語構文としては」サポートしていません。
「ループは再帰で書くのが関数型言語」とか良く言われます。
でも、手続き型言語の世界から来た人にとっては「再帰って、スタック膨れるんじゃね?」って、不安に思いますよね?

あなたの心配は正しい!