mike-neckのブログ

Java or Groovy or Swift or Golang

haskell

Freeモナドを使ってIOアクションをモッキングする的な

Freeモナドがすごい的な話がおよそ4〜5年前くらいに流行ってたのだが、その頃はHaskellなど触ってなかった僕には関係のない話でした。 Haskellを触ってて、IOアクションのあるようなプログラムをテスト的に動かしてみようとすると途端に困るわけです。 例え…

Haskellのdo記法

いまいちピンときていなかったから、少しだけ調べた。 Haskell/do notation - Wikibooks, open books for an open world 次のようなモナドっぽい値を返す関数があって、連続で利用するときに使うらしい。 monadicFun1 :: Maybe Int monadicFun1 = return 1 m…

やっとこさ、JSONをパースするHaskellのコードほぼ完成した

以前、書いた記事でJSONの数値型のパーサーが書けなくて、悩んでたやつ、なんとか汚いながらも動く奴が書けた。 これが以前のやつ HaskellでJSONのパーサーを書いてみた - mike-neckのブログmike-neck.hatenadiary.com JSONの数値型のパーサー部分が書けなか…

Haskellで基本的なことをhspecで確認してみる

上記のとおりです。 『すごいH』本を読みながら、リストだとかMaybeだとかEitherだとかがFunctor、Applicativeなどを満たしていることを各法則を試すことによって確認しています。 具体的な課題はこんな感じ 課題 次の型がそれぞれ下に列挙された型クラスの…

hspecを使ってcabalでテストしてみた

Haskellのhspecについて、まあ、すでにやっている人はやっているだろうし、今更感が否めない記事です。僕のスキルの低さではなかなかレベルが高くて辛かったのでメモになっています。なお、本記事のほぼ全部の部分については以下のエントリーを参考にしてい…

『すごいHaskellたのしく学ぼう』を読んだ

表記のとおりです。 1ヶ月くらいかかっちゃいました。 Amazon.co.jp: すごいHaskellたのしく学ぼう!: Miran Lipovača, 田中 英行, 村主 崇行: 本amazon.co.jp 内容的にはAmazonのカスタマーレビューが詳しいですが、自分なりに書くとこんな感じです。 Funct…

HaskellでJSONのパーサーを書いてみた

POSTDというサイトに次のようなエントリーがあった。 Haskellで生産性を高める-Pythonからの移行 | プログラミング | POSTDpostd.cc で、この記事の中でParsecライブラリーの紹介としてJSONパーサーを作るという動画が紹介されていた。 www.youtube.com Hask…

LTS-Haskell-Initを少し修正した

以前書いたgradleでhaskellの開発環境を整えるやつ mike-neck/LTS-Haskell-Initgithub.com gradleでLTS Haskellのテンプレートを作るやつ作った - mike-neckのブログmike-neck.hatenadiary.com を久々に起動したら、stackageのsnapshotsのパス構成が変わって…

Scalaのimplicit parameterとHaskellのType class(雑)

Scalaのcatsというライブラリーのドキュメント読んでて、Haskellじゃんなんて思ってました。 Cats Documentation - Typeclasses で、若干気になったことがありまして、Javaの立場でScalaのimplicit parameterを見ていて、なんか怪しげな感じのする関数だなー…

『すごいHaskell』第6章メモ

このようなリストに対する標準的な再帰パターンでは、再帰を明示的に書くよりも、畳込みを使うほうがよいでしょう。そのほうが読みやすく理解しやすいからです。foldrの呼び出しは誰が見ても畳み込みですが、明示的な再帰を読むには考える時間が必要です。 …

『すごいHaskellたのしく学ぼう!』読書メモ〜4章

第四章 再帰が重要な理由 問題を大きな問題からより小さな問題に分解する これ以上分けられない基底部まで分解する 基底部では解を明示的に定義する 大きな問題は関数を自分自身に再帰的に適用することで部分問題を再帰的に解いていく 最終的に解を部分的な…

gradleでLTS Haskellのテンプレートを作るやつ作った

何を言っているかわからないタイトルですね。でも字面通りなのです。 StackageのLTS Haskell便利なのですが、更新頻度が週1回くらいあって、次のQiitaの手順を行うのが面倒なので、なんとかしたかったのですが、あまりにシェルちからなさすぎてgradleでやる…

『ふつうのHaskellプログラミング』読み終わった

表記のとおりです。 一応、簡単なHaskellのプログラムは書けるかもしれないような気がするようになりました。 第一部のあたりは具体的にプログラムを書きつつ遊ぶことができるので、それなりに身につく感じがします。ただ、内容的には深堀りはしていないので…

『ふつうのHaskell』第10章〜第11章

第10章 エンティティ 変数 型コンストラクタ データコンストラクタ フィールドラベル 型クラス クラスメソッド モジュール定義 基本的な形 module Repository where 特定のエンティティのみエクスポートする module Repository (findById, save) where デー…

『ふつうのHaskell』第九章

単なる読書メモ 代数的データ型 定義の仕方1 - 構造体っぽい ラベルなしコンストラクター -- Student型の定義 data Student = Student String String -- インスタンス化 student = Student "Paul" "Smith" -- パターンマッチ printStudent:: Student -> IO()…

ふつうのHaskell 8章

単なる読書メモ 無名関数 書き方 \n -> n * n 使い方 map (\n -> n * n) [1,2,3,4] 関数合成 書き方 before lineCount:: String -> Int lineCount s = length $ lines s after lineCount:: String -> Int lineCount = length . lines 部分適用 例:5の倍数を…

なぜ今更Haskellやってるかについて

標記の件について、今『ふつうのHaskell』を読んで、Haskellを少しずつやっています。 この前までScalaを勉強しようとしていたのに、なぜHaskellという疑問がありますが、これは単純に僕のメンタルモデルというか思考モデルというか、それに起因するところで…

ふつうのHaskell 2章〜3章

『ふつうのHaskell』の読書メモ 標準の関数まとめ 関数 型 動作概要 == a -> a -> Bool 第一引数と第二引数を比較した結果を返す lines String -> [String] 改行文字コードで区切ってリストに変換 words String -> [String] 単語に分解する length [a] -> In…

【メモ】IntelliJ IDEAでHaskellを書けるようにする(Mac)

昨日Haskellの環境を作ってみたのだが、cabal install ghc-modを3回ほど失敗して、(#`皿´)グヌヌとなって、最後の方法だけがまともにうまくいったので、そのメモ。基本的には下記のサイトが元ネタで、僕のエントリーは俺得なメモです。 Macにhaskellをイン…